Rsync是Linux/Unix系统中远程和本地复制和同步文件/目录的常用命令。通过Rsync可以实现跨目录、磁盘和网络在远程和本地复制和同步数据,执行数据备份及两台Linux服务器之间的进行镜像。本文华纳云为大家分享关于Linux中Rsync的常用方法(无需root权限也可完成)。
rsync命令遵循以下语法:
# rsync [OPTIONS] SOURCE DESTINATION
不同组件和选项:
-v– 详细输出,显示有关传输的详细信息。
-r– 递归复制数据(但在传输数据时不保留时间戳和权限。
-a- 存档模式,允许递归复制文件,同时保留符号链接、文件权限、用户和组所有权以及时间戳。
-z– 在传输过程中压缩文件以减少网络使用。
-h– 人类可读,以人类可读的格式输出数字。
-P– 传输过程中显示进度。
SOURCE– 指定要传输的源文件或目录,可以是本地位置也可以是远程位置。
DESTINATION– 指定将复制文件或目录的目标路径。与源类似,它可以是本地路径或远程位置。
在linux中安装rsync:
$ sudo apt install rsync [在Debian、Ubuntu 和 Mint 上]
$ sudo yum install rsync [在RHEL/CentOS/Fedora和Rocky/AlmaLinux 上]
$ sudo emerge -a sys-apps/rsync [在Gentoo Linux上]
$ sudo apk add rsync [在Alpine Linux上]
$ sudo pacman -S rsync [在Arch Linux上]
$ sudo zypper install rsync [在OpenSUSE上]
在本地复制/同步:
rsync -zvh backup.tar.gz /tmp/backups/
以上命令会把本地服务器中backup.tar.gz文件同步到mp/backups目录中。
本地目录复制/同步:
rsync -a /dir1/ /dir2/
以上命令将/dir1/目录下的所有文件同步到/dir2/目录下。
把远程的文件同步到本地:
rsync -av root@192.168.1.55:/etc/hosts /dir1/
以上命令会把远程服务器192.168.1.55中的etc/hosts 文件同步到本地dir1目录下。
删除不存在的源目录的目的地文件:
rsync -avz --delete /var/opt/lx/ /root/temp/
以上命令可以在同步时,删除目的地中不存在的于源目录的文件。
显示执行进度:
rsync -avz --progress /var/opt/lx/ /root/temp/
以上命令可以在同步时显示出进度,如文件传输完成进度和传输速率。
查看源和目的地之间的差异:
rsync -avzi /backuphomedir /home/aloft/
进行备份:
rsync -avz /home/aloft/ /backuphomedir
使用Rsync包含具有特定扩展名的文件:
rsync -avz --include='*.txt' /path/to/source/ user@remote:/path/to/destination/
这个命令在传输过程中仅包含扩展名为.txt的文件。
使用Rsync排除具有特定扩展名的文件:
rsync -avz --exclude='*.ext' /path/to/source/ user@remote:/path/to/destination/
以上命令在传输过程中排除指定扩展名的文件。
使用Rsync包含和排除文件:
rsync -avz --include='*.txt' --exclude='*.tmp' /path/to/source/ user@remote:/path/to/destination/
这个命令在同步时包含.txt文件并排除.tmp文件。
同步同一台机上的两个目录:
rsync -r hexoBlog/ dir7/hexoBlog
以上命令会把当前目录下的hexoBlog同步到dir7目录下。
设置文件的传输限制:
rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ user@remote:/root/tmprpm
以上命令仅传输等于或者小于200k的文件。
传输后自动删除源文件:
rsync --remove-source-files -zvh backup.tar.gz user@remote:/tmp/backups/
以上命令在同步后自动删除源文件backup.tar.gz。
使用rsync进行试运行:
rsync -avz -n /path/to/source/ user@remote:/path/to/destination/
以上命令可以模拟执行rsync命令,但是不实际进行文件传输。
同步时忽略已存在的文件:
rsync -avz --ignore-existing /path/to/source/ user@remote:/path/to/destination/
以上命令可以在同步时忽略目标端已存在的文件,只更新源端新增的文件。
以上就是关于rsync命令在不同场景下的应用,如本地和远程文件同步、备份、及文件传输限制等。使用rsync命令有多种优势,如高效文件传输、远程文件同步、增量备份、保留文件权限、带宽控制、更快rsync传输文件速度比等。