寸阳分阴须爱惜,休负春色与时光。这篇文章主要讲述Linux中rsync备份数据使用实例相关的知识,希望能为你提供帮助。
rsync工具用于将文件和目录从一个位置同步到另一个位置。同步的位置可以在本地服务器或远程服务器上。 |
[root@localhost ~]# yum -y install rsync
实例一:本机中的两个目录进行同步
要同步本地计算机中的两个目录,使用?
?rsync -zvr?
???命令??:[root@localhost ~]# rsync -zvr /var/log/ /root/temp/
sending incremental file list
btmp
dnf.librepo.log
...
sssd/sssd_implicit_files.log
sssd/sssd_nss.log
tuned/tuned.log
sent 516,136 bytesreceived 605 bytes1,033,482.00 bytes/sec
total size is 5,451,242speedup is 10.55
参数解释:
- -z 启用压缩
- -v 输出详细信息
- -r 表示递归
文章图片
实例二:使用rsync -a在同步期间保留时间戳
rsync命令的?
?-a?
?选项表示存档模式。??-a?
?选项递归同步、保留符号链接、保留权限、保留时间戳、保留所有者和组。现在,执行以下命令,然后查看文件的时间:
[root@localhost ~]# rsync -azv /var/log/ /root/temp/
sending incremental file list
./
btmp
dnf.librepo.log
dnf.log
dnf.rpm.log
...
sssd/sssd_nss.log
tuned/
tuned/tuned.log
sent 516,231 bytesreceived 629 bytes1,033,720.00 bytes/sec
total size is 5,451,789speedup is 10.55
如下所示,rsync在同步期间保留了时间戳。
文章图片
实例三:将文件从本地同步到远程目录
rsync允许在本地和远程系统之间同步文件/目录,前提是本地和远程系统都要安装rsync才行,否则会提示如下信息:
文章图片
[root@localhost ~]# rsync -avz /root/temp/ root@192.168.43.137:/root/temp
root@192.168.43.137\'s password:
sending incremental file list
created directory /root/temp
./
btmp
dnf.librepo.log
dnf.log
dnf.rpm.log
...
sssd/sssd_nss.log
tuned/
tuned/tuned.log
sent 516,231 bytesreceived 662 bytes206,757.20 bytes/sec
total size is 5,451,789speedup is 10.55
文章图片
下面是在远程系统里面查看已同步的目录:
文章图片
上面可以看到同步时需要输入密码,有时候不希望将文件从本地服务器备份到远程服务器时输入密码,可以在两台主机间设置免密要登录。
实例四:将文件从远程目录同步到本地
要将文件从远程系统同步到本地时,如下所示,在源中指定远程路径,在目标中指定本地路径即可:
[root@localhost ~]# rsync -avz root@192.168.43.137:/root/temp /root/temp
root@192.168.43.137\'s password:
receiving incremental file list
temp/
temp/btmp
temp/dnf.librepo.log
temp/dnf.log
...
temp/tuned/
temp/tuned/tuned.log
sent 634 bytesreceived 516,247 bytes206,752.40 bytes/sec
total size is 5,451,789speedup is 10.55
文章图片
实例五:不要覆盖目标位置上已修改的文件
如果在目标位置修改了文件,我们可能不想用源位置的旧文件覆盖该文件。使用?
?-u?
?选项就可以做到这一点。在下面的示例中,在本地将test.txt文件修改了内容。它不会被远程系统的test.txt文件所覆盖:# 查看一下远程系统temp目录下的test.txt文件大小
[root@localhost ~]# ssh root@192.168.43.137 ls -l /root/temp
root@192.168.43.137\'s password:
total 4
-rw-r--r--. 1 root root 7 Apr72021 test.txt
# 查看一下本机的temp目录下的test.txt文件大小,本机的test.txt文件已修改,所以比远程系统里面的test.txt文件大
[root@localhost ~]# ll /root/temp/
total 4
-rw-r--r--. 1 root root 77 Apr7 21:10 test.txt
# 执行rsync -avzu同步一下
[root@localhost ~]# rsync -avzu root@192.168.43.137:/root/temp /root/
root@192.168.43.137\'s password:
receiving incremental file list
sent 25 bytesreceived 76 bytes40.40 bytes/sec
total size is 7speedup is 0.07
下面查看一下本机的/root/temp目录里面的test.txt是否被覆盖:
文章图片
发现并没有被覆盖。
实例六:在传输过程中查看rsync进度
使用?
?--progress?
?选项显示rsync执行的详细进度,如下所示:[root@localhost ~]# rsync -avz --progress /root/temp/ root@192.168.43.137:/root/temp
文章图片
实例七:在目标目录中删除源目录不存在的文件
如果文件不在源中而是在目标中存在,则可能希望在rsync同步期间删除目标上的文件。在这种情况下,请使用?
?--delete?
?选项:# 查看一下源目录里面的文件
[root@localhost ~]# ll /root/temp/
total 0
-rw-r--r--. 1 root root 0 Apr7 21:46 name.csv
# 查看一下目标目录里面的文件
[root@localhost ~]# ssh root@192.168.43.137 ls -l /root/temp
root@192.168.43.137\'s password:
total 944
drwxr-xr-x. 2 root root6 Apr72021 anaconda
drwx------. 2 root root6 Apr72021 audit
-rw-------. 1 root root0 Apr72021 btmp
-rw-------. 1 root root0 Apr72021 btmp-20210406
drwxr-xr-x. 2 root root6 Apr72021 chrony
-rw-------. 1 root root8432 Apr72021 cron
-rw-------. 1 root root12200 Apr72021 cron-20210221
-rw-------. 1 root root48130 Apr72021 cron-20210228
-rw-------. 1 root root3910 Apr72021 cron-20210308
-rw-------. 1 root root22455 Apr72021 cron-20210406
-rw-------. 1 root root 383369 Apr72021 dnf.librepo.log
-rw-------. 1 root root 476949 Apr72021 dnf.librepo.log-20210221
# rsync使用--delete选项删除目标目录中不包含源目录的文件
[root@localhost ~]# rsync -avz --delete /root/temp root@192.168.43.137:/root
root@192.168.43.137\'s password:
sending incremental file list
deleting temp/chrony/
deleting temp/audit/
deleting temp/anaconda/
deleting temp/dnf.librepo.log-20210221
deleting temp/dnf.librepo.log
deleting temp/cron-20210406
deleting temp/cron-20210308
deleting temp/cron-20210228
deleting temp/cron-20210221
deleting temp/cron
deleting temp/btmp-20210406
deleting temp/btmp
temp/
temp/name.csv
sent 123 bytesreceived 281 bytes161.60 bytes/sec
total size is 0speedup is 0.00
文章图片
在查看一下目标目录是否删除:
文章图片
实例八:文件传输过程中的include和exclude模式
rsync允许在进行同步时提供要包括和排除文件或目录的模式。
[root@localhost ~]# rsync -avz --include \'P*\' --exclude \'*\' root@192.168.43.137:/var/lib/rpm/ /root/temp/
文章图片
在上面的示例中,它仅包括以\'P\'开头的文件或目录,并排除所有其他文件。
实例九:不传输大文件
可以使用?
?rsync --max-size?
?选项告诉rsync不要传输大于指定大小的文件。[root@localhost ~]# rsync -avz --max-size=\'1M\' root@192.168.43.137:/var/lib/rpm/ /root/temp/
文章图片
?
?--max-size=1M?
?使rsync仅传输小于或等于1M的文件。单位可以是K,M,G等。还可以使用?
?--min-size=?
?参数,指定传输最小文件的大小。总结
rsync工具用于将文件和目录从一个位置同步到另一个位置。同步的位置可以在本地服务器或远程服务器上。
本文原创地址:??https://www.linuxprobe.com/rsync-backup-sample.html??
【Linux中rsync备份数据使用实例】
推荐阅读
- 「推荐收藏!」MySQL技术之旅该换换你的数据库版本了,让我们一同迎接8.0的到来哦!
- netty系列之:使用netty搭建websocket客户端
- 用Python绘制移动均线含源代码
- kubeadm初始化kubernetes报错以及解决
- t-io网络编程基础知识介绍
- 2021.7 货拉拉虾皮有赞。。。高级前端岗面试整理
- 鸿蒙应用开发(如何与组件库(Glide)衔接())
- Interrupted Exception异常可能没你想的那么简单!
- 奇思妙想(小程序wxapkg包一键运行至浏览器())