分类 工作 下的文章

今天用git pull来更新代码,遇到了下面的问题:

  1. error:Yourlocalchanges to the following files would be overwrittenbymerge:

  2.    xxx/xxx/xxx.java

  3. Please,commit your changesorstash them before you can merge.

  4. Aborting 

提示已经很友好了,从网友处得到的答案直接帮我解决问题。

1.stash

通常遇到这个问题,你可以直接commit你的修改;但我这次不想这样。

看看git stash是如何做的。

  1. git stash

  2. git pull

  3. git stash pop

接下来diff一下此文件看看自动合并的情况,并作出相应修改。

git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。

2.放弃本地修改,直接覆盖之

  1. git reset--hard

  2. git pull


 

yum -y install epel-release
yum -y install rear syslinux-extlinux grub2-efi-x64-modules bzip2 httpd backuppc telnet

#添加backuppc用户
useradd backuppc && echo "123456"|passwd --stdin backupp


#修改apache启动用户为backuppc
vim /etc/httpd/conf/httpd.conf
sed -i "s/User apache/User backuppc/" /etc/httpd/conf/httpd.conf
sed -i "s/Group apache/Group backuppc/" /etc/httpd/conf/httpd.conf

 
#修改所有主机均可访问backuppc控制页面
vim /etc/httpd/conf.d/BackupPC.conf
<IfModule mod_authz_core.c>
  # Apache 2.4
  <RequireAll>
    Require valid-user
    <RequireAny>
      Require all granted
    </RequireAny>
  </RequireAll>
</IfModule>


#添加加密用户
htpasswd -c /etc/BackupPC/apache.users  backuppc
注:这一步添加的用户是登录时的,密码自定义

 
#配置backupc主配置文件
vim /etc/BackupPC/config.pl
$Conf{CgiAdminUsers}     = 'backuppc';  (配置backuppc账号为bckuppc)
$Conf{ServerInitdPath} = '/etc/init.d/backppc'; (启动命令)
$Conf{ServerInitdStartCmd} = '$sshPath -q -x -l root $serverHost$serverInitdPath start';
$Conf{PingPath} = '/bin/ping';
$Conf{Language} = 'zh_CN';  (更改web页面为中文)

#启动httpd和backuppc服务
systemctl restart httpd && systemctl restart backuppc

 

web端登录

注:登录账号是上面使用htpasswd命令生成的用户和密码。

#首次进来是下图这样

 

web端添加需备份server:
点击左侧“增删客户机”后,选择“客户机”,在下侧窗口“添加”指定server IP,这里测试用172.16.186.132,账号为backuppc(可为其他),然后点“保存”

 

 

保存后刷新页面,在web最左侧选择"客户机报告"---在最下面点击刚添加server IP在左侧Server IP下选择“修改服务器设置”,开始对其设置备份规则:

#备份/opop目录,如下图

#备份/opop下的所有(星号匹配所有)

 

#在172.16.186.131上操作(.ssh目录权限任何都不要改)

186.131端SSH免密登陆设置

 

#172.16.186.132端配置

[root@client2 ~]# mkdir /opop

 

客户端上执行

[root@client2 ~]# yum -y install rsync
[root@client2 ~]# systemctl start rsyncd
[root@client2 ~]# systemctl enable rsyncd

#测试

[root@client2 ~]# cp -r /boot/ /opop/

 

在浏览器上点击左上角“172.16.186.132主页”,然后点击“开始完全备份”,如下图:

#点击"开始完全备份",即可开始完全备份,如下图

#选左侧的“浏览备份”,见下图

 注:上图中也可以选择恢复文件

该链接为以上配置参考

 

 

 

同步widows请参考:https://www.cnblogs.com/kevingrace/p/5972563.html

 


Has anyone gotten BackupPC to work properly using Apache running under a username other than 'backuppc'?

I followed the instructions here:
Wiki

But the server returns a 500 error when accessing localhost/BackupPC_Admin, with the following in my apache error_log:

[Tue Dec 30 14:01:38.891706 2014] [authn_file:error] [pid 2114:tid 140026226648832] (13)Permission denied: [client [redacted wan ip] AH01620: Could not open password file: /etc/backuppc/backuppc.users
[gregory@seneca cgi-bin]$ ls -l
total 8
-rwsr-x--- 1 backuppc http 6768 Dec 30 13:08 BackupPC_Admin
[gregory@seneca lib]$ ls -l /etc/backuppc/
total 92
-rw-r----- 1 backuppc backuppc    46 Dec 30 13:38 backuppc.users
-rw-r----- 1 backuppc backuppc 85105 Dec 30 13:37 config.pl
-rw-r----- 1 backuppc backuppc  2214 Aug 19 08:06 hosts

My web server does function as I'm currently using it to host an ownCloud installation as well as a koken installation.

Any insight would be appreciated -

Thanks,
Greg

EDIT: SOLVED

In order to get things working in my particular setup I had to

1) chmod 755 /etc/backuppc/*
2) In /etc/conf/httpd/extra/backuppc.conf
2.1) comment out the 'Require' option in the <Directory /usr/share/backuppc/cgi-bin> directive
2.2) change the 'Require' option to 'Require all granted' in the <Directory /usr/share/backuppc/html> directive

Last edited by rollenwiese (2014-12-31 01:43:30)


环境:Centos7.6、Backuppc
安装:(host:192.168.3.11)

[root@localhost ~]# yum install backuppc -y12

配置

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf (修改apache启动用户为backuppc)
User backuppc
Group backuppc
[root@localhost ~]# vim /etc/httpd/conf.d/BackupPC.conf(修改所有主机均可访问backuppc控制页面)
<IfModule mod_authz_core.c>
  # Apache 2.4
  <RequireAll>
    Require valid-user
    <RequireAny>
      Require all granted
    </RequireAny>
  </RequireAll>
</IfModule>
由以上配置文件可知apache user文件为如下:
AuthUserFile /etc/BackupPC/apache.users
[root@localhost ~]# htpasswd -c /etc/BackupPC/apache.users backuppc
(这里密码设置为12345)
[root@localhost ~]# vim /etc/BackupPC/config.pl(配置backupc主配置文件)
$Conf{CgiAdminUsers}     = 'backuppc';(配置backuppc账号为bckuppc)
$Conf{ServerInitdPath} = '/etc/init.d/backppc';(启动命令)
$Conf{ServerInitdStartCmd} = '$sshPath -q -x -l root $serverHost$serverInitdPath start';
$Conf{PingPath} = '/bin/ping';
$Conf{Language} = 'zh_CN';(更改web页面为中文)
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# systemctl restart backuppc12345678910111213141516171819202122232425

web测试
在这里插入图片描述
web端添加需备份server
点击“增删客户机”后,选择“客户机”,在右侧窗口“添加”指定server IP,这里测试用192.168.3.12,账号为backuppc,然后点“保存”
在这里插入图片描述

在这里插入图片描述
保存后刷新页面,选择刚添加server,选择“修改服务器设置”开始对其设置备份规则:
在这里插入图片描述
在“RsyncShareName”一栏输入需备份路径,这里设置为/test;然后再BackupFilesOnly一栏输入“*”,表示备份/test目录下所有文件,当然也可指定文件,然后点击保存:
在这里插入图片描述
SSH免密登陆设置

[root@localhost ~]# cd /var/lib/BackupPC/
[root@localhost BackupPC]# mkdir .ssh
[root@localhost BackupPC]# chown backuppc.backuppc .ssh
[root@localhost BackupPC]# chmod 700 .ssh
[root@localhost BackupPC]# chmod 700 .ssh
[root@localhost BackupPC]# su -s /bin/bash backuppc
bash-4.2$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/BackupPC/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/lib/BackupPC/.ssh/id_rsa.
Your public key has been saved in /var/lib/BackupPC/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:1dWLzmcZ22P8oz4oXHvCd145490rY0JVUoCuoR8vp6A backuppc@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|            ..+o |
|           o o ..|
|          o . + .|
|         o . o o |
|        S o + . =|
|       . o o o Oo|
|       .o * o +++|
|      . .= O B.oB|
|     E   .= BoB+=|
+----[SHA256]-----+
bash-4.2$ ssh-copy-id root@192.168.3.1212345678910111213141516171819202122232425262728

对目标server操作

[root@localhost ~]# mkdir /test
[root@localhost ~]# useradd backuppc
[root@localhost ~]# passwd backuppc
[root@localhost ~]# chown -R backuppc.backuppc /test1234

测试

[root@localhost ~]# cp -r /boot/ /test1

点击“192.168.3.12主页”,然后点击“开始完全备份”,即可开始完全备份:
在这里插入图片描述
点击“浏览备份”,即可查看所备份文件&目录,这里可以选择部分恢复或者全部恢复:
在这里插入图片描述


导读vi与vim vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。简单介绍vi与vim的区别以及常用命令

一、vi与vim的区别

1、多级撤消

在vi编辑器中,按u只能撤消上次命令,而在vim里可以无限制的撤消。

2、易用性

vi编辑器只能运行于unix中,而vim不仅可以运行于unix,还可用于windows、mac等多操作平台。

3、语法加亮

vim可以用不同的颜色来加亮你的代码。

如下图对比:

vi main.c    vim main.c

简单介绍vi与vim的区别以及常用命令简单介绍vi与vim的区别以及常用命令

4、可视化操作

vim不仅可以在终端运行,也可以运行于windows、 mac os、 windows。

5、对vi完全兼容

可以把vim当成vi来使用。

小结:vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本。vi使用于文本编辑,但是vim更适用于coding。

二、VI模式

1、命令行模式 (command mode/一般模式)

任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使Vi进入命令行模式;我们在shell环境(提示符为$)下输入启动vi命令,进入编辑器时,也是处于该模式下。
在该模式下,用户可以输入各种合法的vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,vi会响铃报警。

2、文本输入模式 (input mode/编辑模式)

在命令模式下输入插入命令i(insert)、附加命令a (append)、打开命令o(open)、修改命令c(change)、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令行模式下,按”ESC”键即可。

3、末行模式 (last line mode/指令列命令模式)

末行模式也称转义模式。

vi和Ex编辑器的功能是相同的,二者主要区别是用户界面。在vi中,命令通常是单个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。vi有一个专门的“转义”命令,可访问很多面向行的Ex命令。

在命令模式下,用户按“:”键即可进入末行模式下,此时vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,vi自动回到命令模式。

三、VIM模式

1、正常模式 (Normal-mode)

启动vim后默认处于正常模式(即命令行模式)。不论位于什么模式,按下<Esc>键(有时需要按两下)都会进入正常模式。

2、插入模式 (Insert-mode)

在正常模式中按下i, a, o, I,A,O键,会进入插入模式。现在只用记住按i键会进行插入模式。在插入模式中,击键时会写入相应的字符。

3、命令模式 (Command-mode)

在正常模式中,按下:(英文冒号)键,会进入命令模式。

在命令模式中可以执行一些输入并执行一些vim或插件提供的指令,就像在shell里一样。这些指令包括设置环境、文件操作、调用某个功能等等。

4、可视模式 (Visual-mode)

在正常模式中按下v,V,<ctrl>+v,可以进入可视模式。

可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便。

四、VI与VIM的常用命令

注:由于VI与VIM在命令上几乎相同,所以这里那VIM为例。

1、模式转换

正常-->输入:以下这几个参数实现的功能都是转为输入模式,只不过转换后的光标所在的位置不同(感兴趣可以试一试,虽然意义不大!)

i:在当前光标所在字符的前面,转为输入模式;

a:在当前光标所在字符的后面,转为输入模式;

o:在当前光标所在行的下方,新建一行,并转为输入模式;

I:在当前光标所在行的行首,转为输入模式;

A:在当前光标所在行的行尾,转为输入模式;

O:在当前光标所在行的上方,新建一行,并转为输入模式;

输入-->正常:

ESC

正常-->末行:

:(英文冒号)

末行-->正常:

ESC,ESC

注意:输入模式和末行模式之间不能直接切换。

2、关闭文件(末行模式)

:q        退出;

:q!        不保存退出;

:w        保存;

:w!        强行保存;

:wq        保存退出

:wq!        强制保存并退出

注意:在正常模式下按组合键shift zz可以保存并退出

3、移动光标(正常模式)

1)逐字符移动:
h: 左;

l: 右;

j: 下;

k: 上;

#h: 移动#个字符

2)以单词为单位移动
w: 移至下一个单词的词首;

e: 跳至当前或下一个单词的词尾;

b: 跳至当前或前一个单词的词首;

#w: 移动#个单词

3)行内跳转:
0: 绝对行首;

^: 行首的第一个非空白字符;

$: 绝对行尾

4)行间跳转
#G:跳转至第#行;

gg: 第一行;

G:最后一行

5)末行模式
.: 表示当前行;

$: 最后一行;

#:第#行;

+#: 向下的#行

4、翻屏(正常模式)

Ctrl+f: 向下翻一屏;

Ctrl+b: 向上翻一屏;

Ctrl+d: 向下翻半屏;

Ctrl+u: 向上翻半屏

5、复制字符

1)正常模式

复制:

yy:复制当前行

nyy:复制当前行至下面的n行

粘贴:

p:粘贴到光标的后面

P:粘贴到光标的前面

2)可视模式

复制:

y:复制当前行

ny:复制当前行至下面的n行

粘贴:

p:粘贴到光标的后面

P:粘贴到光标的前面

6、删除字符(正常模式)

x: 删除光标所在处的单个字符;

#x: 删除光标所在处及向后的共#个字符;

d$或D:从当前光标处删除至行尾;

d^:从当前光标处删除之行首;

dd: 删除当前光标所在行;

#dd: 删除包括当前光标所在行在内的#行;

注:dd相当于剪切操作,如果你dd之后按p或者P可以进行粘贴。

7、替换字符

r:替换单个字符(按完r在按你要替换的字符即可)

R:替换多个字符(从你要替换的位置开始替换,直至你退出正常模式)

8、撤销编辑操作:u

u:撤消前一次的编辑操作;

#u:直接撤消最近#次编辑操作;

温馨提示:连续u命令可撤消此前的n次编辑操作;

9、将另外一个文件(/path/sunhui.txt)的内容填充在当前文件夹中

:r   /path/sunhui.txt :填充到当前文件所在光标的后面

10、修改vim配置文件

vim   ~/.vimrc:修改当前用户的vim配置文件

vim    /etc/vimrc:修改所有用户的vim配置文件

例:在当前用户的vim配置文件中添加显示行数的命令

vim    ~/.vimrc:在末行添加 set nu 即可

11、拓展(末行模式)

1)显示或取消显示行号
:set    nu            //显示

:set    number    //显示

:set    nonu        //取消

2)设置语法高亮
:syntax    on    //开启

:syntax    off    //关闭

3)分屏
:vsp xxx.x    //将两个文件垂直分屏

:ctrl+w w   //切屏

注:该特性当前有效,如果想要永久有效需修改配置文件