2021年1月

1、创建软链接

  具体用法是:ln  -s   [源文件]   [软链接文件]。

复制代码

[root@localhost folder]# pwd/tmp/folder
[root@localhost folder]# ll
total 4drwxr-x--- 2 root root 4096 Apr 30 16:46 files
[root@localhost folder]# ln -s /tmp/folder/files /tmp/folder/files_ln
[root@localhost folder]# ll
total 4lrwxrwxrwx 1 root root   17 Apr 30 16:49 files_ln -> /tmp/folder/files
drwxr-x--- 2 root root 4096 Apr 30 16:46 files

复制代码

  -s 是代号(symbolic)的意思。这里有两点要注意:

    第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;

    第二,ln的链接又软链接 和硬链接两种,软链接就是ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件。

  无论是软链接还是硬链接,文件都保持同步变化,都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。。

  【硬连接】

  硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

  【软连接】  

  另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

  【两种链接的区别】

  硬链接文件有两个限制:
    1)、不允许给目录创建硬链接。
    2)、只有在同一文件系统中的文件之间才能创建链接,而且只有超级用户才有建立硬链接权限。
  对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的内容。其原因是因为对应的文件的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。文件才会被真正删除。
  注:保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index即I节点)。
  软链接没有硬链接以上的两个限制,因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。但是软链接的缺点在于:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

  【参数说明】

  -f : 链结时先将与 dist 同档名的档案删除
  -d : 允许系统管理者硬链结自己的目录
  -i : 在删除与 dist 同档名的档案时先进行询问
  -n : 在进行软连结时,将 dist 视为一般的档案
  -s : 进行软链结(symbolic link)
  -v : 在连结之前显示其档名
  -b : 将在链结时会被覆写或删除的档案进行备份
  -S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
  -V METHOD : 指定备份的方式
  --help : 显示辅助说明
  --version : 显示版本

2、修改软链接

   ln –snf  [新的源文件或目录]   [软链接文件]

复制代码

[root@localhost folder]# ll
total 4lrwxrwxrwx 1 root root   17 Apr 30 16:49 files_ln -> /tmp/folder/filesdrwxr-x--- 2 root root 4096 Apr 30 16:46 files
[root@localhost folder]# ln -snf /tmp/folder    /tmp/folder/files_ln[root@localhost folder]# ll
total 4drwxr-x--- 2 root root 4096 Apr 30 16:46 files
lrwxrwxrwx 1 root root   11 Apr 30 16:59 files_ln -> /tmp/folder

复制代码

3、删除软链接

  rm –rf   ./软链接名称

  rm -rf ./软链接名称/ (这样就会把软链接以及软链接指向下的内容删除)

复制代码

[root@localhost folder]# ll
total 4lrwxrwxrwx 1 root root   17 Apr 30 16:49 files_ln -> /tmp/folder/files
drwxr-x--- 2 root root 4096 Apr 30 16:46 files
[root@localhost folder]# rm -rf ./files_ln
[root@localhost folder]# ll
total 4drwxr-x--- 2 root root 4096 Apr 30 16:46 files
[root@localhost folder]# ll
total 4lrwxrwxrwx 1 root root   17 Apr 30 16:49 files_ln -> /tmp/folder/files
drwxr-x--- 2 root root 4096 Apr 30 16:46 files
[root@localhost folder]# rm -rf ./files_ln/[root@localhost folder]# ll
total 0

复制代码


This is a complete guide to install BackupPC on your CentOS 7 server.

#Install BackupPC and prerequsities

yum upgrade -y
yum install epel-release
yum install backuppc nfs-utils nfs-utils-lib bzip2
systemctl restart backuppc.service

#Set permissions

cd /usr/share/BackupPC/
chown backuppc:apache sbin/*

cd /usr/share/BackupPC/sbin
chmod u+s BackupPC_Admin

usermod -s /bin/bash backuppc

#Set firewall rule for HTTP port.

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

#Edit BackupPC config

vi /etc/BackupPC/config.pl

Edit

$Conf{CgiAdminUserGroup} = '';
 $Conf{CgiAdminUsers} = '';

TO

$Conf{CgiAdminUserGroup} = '';
 $Conf{CgiAdminUsers} = 'backuppc';

THEN

Edit

$Conf{PingPath} = '';

TO

$Conf{PingPath} = '/bin/ping';

#Edit your apache configuration

vi /etc/httpd/conf.d/BackupPC.conf
<Directory /usr/share/BackupPC/>
 # BackupPC requires valid authentication in order for the web interface to
 # function properly. One can view the web interface without authentication
 # though all functionality is disabled.
 #
 # htpasswd -c /etc/BackupPC/apache.users yourusername
 #
AuthType Basic
 AuthUserFile /etc/BackupPC/apache.users
 AuthName "BackupPC"
<IfModule mod_authz_core.c>
 # Apache 2.4
 <RequireAll>
 Require valid-user
 <RequireAny>
 Require local
 # --> In order to access only this specific IP
 Require ip 192.168.16
 # --> Uncomment for access everywhere
 # Require all granted
 </RequireAny>
 </RequireAll>
 </IfModule>
 <IfModule !mod_authz_core.c>
 AllowOverride All
 Order allow,deny
 Deny from all
 </IfModule>
</Directory>
Alias /BackupPC/images /usr/share/BackupPC/html/
 ScriptAlias /BackupPC /usr/share/BackupPC/sbin/BackupPC_Admin
 ScriptAlias /backuppc /usr/share/BackupPC/sbin/BackupPC_Admin

#Create username and password for BackupPC GUI

htpasswd -c /etc/BackupPC/apache.users backuppc

New password:
Re-type new password:
Adding password for user backuppc

#Restart your services

systemctl restart backuppc.service
systemctl restart httpd.service

#Then add your ssh key to your remote server.

su - backuppc
ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/BackupPC/.ssh/id_rsa):
Created directory ‘/var/lib/BackupPC/.ssh’.
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.

ssh-copy-id root@your-remote-ip

#Test it.

ssh root@your-remote-ip

#Then go

http://your-ip/BackupPC

#Enter your username and password that you created before #htpasswd -c /etc/BackupPC/apache.users backuppc

#Go “Edit Hosts”

#Click Add

#Then write an hostname or IP of your remote server

#Then click SAVE

#Refresh your page and select your host.

!!! DO NOT FORGET INSTALL RSYNC TO YOUR REMOTE SERVER !!!

#Click “Edit Config” for your selected host

#Select Xfer

#Add “*” value for “BackupFilesOnly” Box

#Write down your path name that you want to create backup in RsyncShareName Box

#Then Click Save.!

#Click Start FULL BACKUP

You are ready to go!

Windows SMB Backup

You can also take backup of your Windows clients using BackupPC

The basic steps are

  • Create a backuppc user in your domain/client with backup operator privileges

  • Create a share on client server and give read and list folder permissions to backuppc user

  • Create inbound firewall rule for BackupPC server

  • Test your configuration by typing from BackupPC Server

    • smbclient -U “Domain\backuppc” //CLIENTIP/ShareName

    • You will see smb prompt, try to list the files by typing “dir”

  • Add the client to backuppc and edit the credentials:

    • change Xfer method to SMB

    • enter username as DOMAIN\user

    • enter password

    • change share name from C$ to Share Name given


我的开发环境是linux,但是需要同时维护windows和linux的服务器,所以有时需要在linux系统下也能远程控制windows的机器。

rdesktop是一款开源的远程连接工具,它通过实现了Remote Desktop Protocol (RDP) 来支持远程windows的电脑。

rdesktop的官网:http://www.rdesktop.org/ 

 

rdesktop安装

sudo apt-get install rdesktop

 

windows配置

  1. 勾选允许远程协助连接这台计算机

  2. 选中允许运行任意版本远程桌面的计算机连接

 

打开远程

rdesktop -g 1340x650 -a 32 -r sound:local -r clipboard:PRIMARYCLIPBOARD -r disk:Frdisk=/mnt/share -u user_name -p password 192.168.1.3 &

-g 设置远程的分辨率,可根据自己电脑的实际分辨率设置

-a 设置色彩深度

-u 设置用户名(可选)

-p 设置密码(可选)

-f  全屏模式

-r 设备重定向:

  -r sound:local 可以将声音重定向到客户端机

  -r clipboard:PRIMARYCLIPBOARD 使主机客户机共享剪切板

  -r disk:Frdisk=/mnt/share 使客户端的/mnt/share挂截到windows的Frdisk盘

 

进入全屏模式后可以用 Shift+Ctrl+Enter 切换回非全屏

Keep it simple!

作者:KEITSI

出处:http://www.cnblogs.com/keitsi/

知识共享,欢迎转载。


今天用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