阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux中rsync备份数据使用实例

77次阅读
没有评论

共计 4225 个字符,预计需要花费 11 分钟才能阅读完成。

导读 rsync 工具用于将文件和目录从一个位置同步到另一个位置。同步的位置可以在本地服务器或远程服务器上。

在 Centos 中使用下面命令安装 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 bytes  received 605 bytes  1,033,482.00 bytes/sec
total size is 5,451,242  speedup is 10.55

参数解释:

  • -z 启用压缩
  • -v 输出详细信息
  • -r 表示递归

查看一下 /root/temp 目录,发现 rsync 在同步期间未保留时间戳。
Linux 中 rsync 备份数据使用实例

实例二:使用 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 bytes  received 629 bytes  1,033,720.00 bytes/sec
total size is 5,451,789  speedup is 10.55

如下所示,rsync 在同步期间保留了时间戳。
Linux 中 rsync 备份数据使用实例

实例三:将文件从本地同步到远程目录

rsync 允许在本地和远程系统之间同步文件 / 目录,前提是本地和远程系统都要安装 rsync 才行,否则会提示如下信息:
Linux 中 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 bytes  received 662 bytes  206,757.20 bytes/sec
total size is 5,451,789  speedup is 10.55

Linux 中 rsync 备份数据使用实例
下面是在远程系统里面查看已同步的目录:
Linux 中 rsync 备份数据使用实例
上面可以看到同步时需要输入密码,有时候不希望将文件从本地服务器备份到远程服务器时输入密码,可以在两台主机间设置免密要登录。

实例四:将文件从远程目录同步到本地

要将文件从远程系统同步到本地时,如下所示,在源中指定远程路径,在目标中指定本地路径即可:

[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 bytes  received 516,247 bytes  206,752.40 bytes/sec
total size is 5,451,789  speedup is 10.55

Linux 中 rsync 备份数据使用实例

实例五:不要覆盖目标位置上已修改的文件

如果在目标位置修改了文件,我们可能不想用源位置的旧文件覆盖该文件。使用 -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 Apr  7  2021 test.txt
# 查看一下本机的 temp 目录下的 test.txt 文件大小,本机的 test.txt 文件已修改,所以比远程系统里面的 test.txt 文件大
[root@localhost ~]# ll /root/temp/
total 4
-rw-r--r--. 1 root root 77 Apr  7 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 bytes  received 76 bytes  40.40 bytes/sec
total size is 7  speedup is 0.07

下面查看一下本机的 /root/temp 目录里面的 test.txt 是否被覆盖:
Linux 中 rsync 备份数据使用实例
发现并没有被覆盖。

实例六:在传输过程中查看 rsync 进度

使用 --progress 选项显示 rsync 执行的详细进度,如下所示:

[root@localhost ~]# rsync -avz --progress /root/temp/ root@192.168.43.137:/root/temp

Linux 中 rsync 备份数据使用实例

实例七:在目标目录中删除源目录不存在的文件

如果文件不在源中而是在目标中存在,则可能希望在 rsync 同步期间删除目标上的文件。在这种情况下,请使用 --delete 选项:

# 查看一下源目录里面的文件
[root@localhost ~]# ll /root/temp/
total 0
-rw-r--r--. 1 root root 0 Apr  7 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 root      6 Apr  7  2021 anaconda
drwx------. 2 root root      6 Apr  7  2021 audit
-rw-------. 1 root root      0 Apr  7  2021 btmp
-rw-------. 1 root root      0 Apr  7  2021 btmp-20210406
drwxr-xr-x. 2 root root      6 Apr  7  2021 chrony
-rw-------. 1 root root   8432 Apr  7  2021 cron
-rw-------. 1 root root  12200 Apr  7  2021 cron-20210221
-rw-------. 1 root root  48130 Apr  7  2021 cron-20210228
-rw-------. 1 root root   3910 Apr  7  2021 cron-20210308
-rw-------. 1 root root  22455 Apr  7  2021 cron-20210406
-rw-------. 1 root root 383369 Apr  7  2021 dnf.librepo.log
-rw-------. 1 root root 476949 Apr  7  2021 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 bytes  received 281 bytes  161.60 bytes/sec
total size is 0  speedup is 0.00

Linux 中 rsync 备份数据使用实例
在查看一下目标目录是否删除:
Linux 中 rsync 备份数据使用实例

实例八:文件传输过程中的 include 和 exclude 模式

rsync 允许在进行同步时提供要包括和排除文件或目录的模式。

[root@localhost ~]# rsync -avz --include 'P*' --exclude '*' root@192.168.43.137:/var/lib/rpm/ /root/temp/

Linux 中 rsync 备份数据使用实例
在上面的示例中,它仅包括以 ’P’ 开头的文件或目录,并排除所有其他文件。

实例九:不传输大文件

可以使用 rsync --max-size 选项告诉 rsync 不要传输大于指定大小的文件。

[root@localhost ~]# rsync -avz --max-size='1M' root@192.168.43.137:/var/lib/rpm/ /root/temp/

Linux 中 rsync 备份数据使用实例
--max-size=1M使 rsync 仅传输小于或等于 1M 的文件。单位可以是 K,M,G 等。

还可以使用 --min-size= 参数,指定传输最小文件的大小。

总结

rsync 工具用于将文件和目录从一个位置同步到另一个位置。同步的位置可以在本地服务器或远程服务器上。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计4225字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中