本文介绍Rsync的功能,在Linux/Unix系统上安装rsync的方法,并通过示例的方式介绍使用rsync命令的方法。
Rsync介绍及其功能
在rsync的手册页中,Rsync是一种快速且极其通用的文件复制工具,它可以通过任何远程shell在本地复制到/从另一个主机复制,或者从远程rsync守护进程复制到远程rsync守护进程,它提供了大量选项来控制其行为的各个方面,并允许非常灵活地指定要复制的文件集,它以其delta传输算法而闻名,它通过仅发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量。
Rsync广泛用于备份和镜像,并作为日常使用的改进复制命令,它查找需要使用快速检查算法(默认情况下)传输的文件,该算法查找已更改insize或最后修改时间的文件,当快速检查指示不需要更新文件的数据时,将直接在目标文件上对其他保留属性(由选项请求)进行任何更改。
Rsync的更多功能包括:
支持复制链接、设备、所有者、组和权限。
排除和排除类似于GNU tar的选项。
CVS排除模式,用于忽略CVS忽略的相同文件。
可以使用任何透明的远程shell,包括rsh或ssh(参考:安装和使用EasySSH在Linux上设置SSH连接的方法)。
不需要超级用户权限。
管道传输文件以最小化延迟成本。
支持匿名或经过身份验证的rsync守护程序(适用于镜像)。
使用rsync语法及最常见的选项
在较高级别,以下是使用rsync时的语法。
在本地计算机/计算机上使用它:
rsync [OPTION…] …
通过远程shell使用它。
从远程主机中提取文件:
rsync [OPTION…] [USER@]REMOTE-HOST:…
将文件从本地推送到远程主机:
rsync [OPTION…] … [USER@]REMOTE-HOST:
附:rsync最常见的选项
-v,-verbose:增加详细程度。
-q,-quiet:处理非错误消息。
-r,-recursive:递归到目录中。
-o,-owner:保留所有者(仅限超级用户)。
-progress:显示转移过程中的进度。
-z,–compress:在传输过程中压缩文件数据。
-H,-hard-links:保留硬链接。
-h,–human-readable:可读格式的可读输出数字。
-W,-whole-file:复制整个文件,rsync默认以增量方式复制,此选项强制它复制整个文件。
-delete:删除目标中但在源中缺少的文件。
-e:指定要使用的远程shell,例如ssh。
–max-size=SIZE:不传输任何大于SIZE的文件。
–min-size=SIZE:不传输任何小于SIZE的文件。
rsync还有其他一些选项可供使用,请查看其手册页以获取更多信息。
安装rsync
在Debian/Ubuntu上安装rsync:
sudo apt -y install rsync
在RHEL/CentOS/Fedora上安装Rsync:
sudo yum -y install rsync
sudo dnf -y install rsync
在Arch Linux/Manjaro上安装rsync:
sudo pacman -S rsync
在FreeBSD上安装rsync:
sudo pkg install rsync
使用rsync的示例
1、将本地计算机上的文件复制到目录:
rsync -azvh --progress forgeeks.tar /tmp/
2、将进度中的一个目录中的文件同步到本地计算机上的另一个目录:
rsync -arvzh --progress /home/tech/django/ /home/pench/backup/
3、将本地目录中的文件复制/同步到远程主机:
rsync -arvh --progress /home/tech/django/ user@192.168.1.4:/tmp/django-backup/
4、将文件从远程主机复制/同步到本地计算机:
rsync -arvh --progress user@192.168.1.3:/home/pench/flask/ /home/tech/flask/
使用ssh复制/同步文件,Ssh通过安全隧道提供文件传输,rsync可以从中受益,特别是如果你通过不安全的网络传输/同步文件,这里我们将使用-e选项。
5、远程到本地
rsync -arvhe ssh --progress user@192.168.1.3:/home/pench/flask/ /home/tech/flask/
6、本地到远程
rsync -arvhe ssh --progress /home/tech/django/ user@192.168.1.:4/tmp/django-backup/
7、使用排除选项复制/同步文件
你可以使用正则表达式(正则表达式)包含和排除文件同步:
rsync -avzh --progress --include '.txt' --exclude '.pdf' user@192.168.1.3:/tmp/django-backup/ /home/tech/django/
以上将包括以txt扩展名结尾的所有文件,并在同步期间排除以pdf扩展名结尾的所有文件。
8、复制/同步不大于给定大小的文件
1]、本地到远程:
rsync -avzhe ssh --max-size='50k' /home/tech/django/ user@192.168.1.4:/tmp/django-backup/
在上面,/home/tech/django/目录中任何大于50k的文件都不会被复制到远程站点。
2]、复制/同步不小于给定大小的文件:
rsync -avzhe ssh --min-size='50k' /home/tech/django/ user@192.168.1.4:/tmp/django-backup/
这里,/home/tech/django/目录中任何小于50k的文件都不会被复制到远程站点。
结论
rsync可以用作备份解决方案,因为它可以同步你的文件,并确保你希望保持完整的任何内容保持不变,rsync还有其他选项,如果上述内容还不够充分,请查看其手册页以获取更多信息。
相关主题