文章目录
楔子
《[图灵程序设计丛书].Linux Shell脚本攻略.第3版》学习 rsync。做个学习笔记
7.8 使用rsync备份系统快照
数据涉及远程数据的备份,rsync可以在最小化数据传输同时,同步不同位置上的文件和目录。相较与cp命令,rsync的优势在于比较文件修改日期,仅复制较新的文件。另外,他还支持远程数据传输以及压缩加密。
7.8.1
7.8.1.1 将源目录复制到目的路径
rsync -av source_path destination_path
eg:
rsync -av azkaban [email protected]:/root
- -a表示进行递归操作
- -v(verbose):表示在stdout上打印出细节或进度
上述命令会以递归的方式将所有文件从源路径复制到目的路径。源路径和目的路径既可以是远程路径,也可以是本地路径
7.8.1.2 数据备份到远程服务器主机
rsync -av source_dir username@host:PATH
要保持两端的数据同步,需要定期运行同样的rsync命名,它只会复制更改过的文件
7.8.1.3 将远程主机上的数据恢复到本地
rsync -av username@host:PATH destination
rsync命令用SSH连接远程主机,因此必须使用user@host 这种形式设定远程主机的地址,其中user代表用户名,host代表远程主机的ip或者主机名,而path指定了远程主机中待复制数据所在路径。
7.8.1.4 压缩数据
通过网络传输数据时,压缩数据能够明显改善传输效率。可以使用-z 指定在传输时压缩数据。
rsync -avz source destination
7.8.1.5 同步注意
rsync -av /home/test/ /home/backups
rsync -av /home/test /home/backups
第一个命令 将源目录(/home/test)中的内容,不包括目录本身复制到了 /home/backups 目录中
这条命令将包括源目录本身(/home/test)在内的内容复制到新的backups目录中
>
就路径格式而言,如果我们在源路径末尾使用 / ,那么 rsync 会将 sourch_path 中结尾目录内所有内容复制到目的地 > >
如果没有在源路径末尾使用 / , rsync 会将 sourch_path 中的结尾目录本身 也复制过去 > > 选项-r强制 rsync以递归方式复制目录中的所有的内容
7.8.3 补充内容
rsync命令还提供了一些其他功能选项
7.8.3.1 使用rsync进行递归是排除部分文件
选项 --exclude 和 --exclude-from 可以指定不需要传输的文件
eg:
# 排除md文件
rsync -avz azkaban centos7:/root --exclude "*.md"
# 通过一个列表文件指定需要排除的文件
rsync -avz azkaban centos7:/root --exclude-from=./exclude.txt
[root@had0 ~]# more exclude.txt
*.md
*.bat
7.8.3.2 在更新rsync备份是,删除不存在的文件
默认情况下,rsync并不会删除目的端那些在源端不存在的文件。如果要删除这类文件,可以使用rsync的–delete选项
rsync -avz SOURCE DESTINATION --delete