如何使用示例在Linux/Unix上使用rsync命令
介绍
从rsync的手册页,rsync是一个快速而异的多功能文件复制工具。
它可以在本地复制到/从另一个远程shell或者从远程rsync守护程序中的另一个主机复制。
它提供了大量选项,可控制其行为的每个方面,并允许复制一组文件的非常灵活的规范。
它以其三角洲传输算法而闻名,它通过仅在源文件和目的地的现有文件之间发送差异来减少通过网络发送的数据量。
rsync广泛用于备份和镜像,并作为日常使用的改进副本命令。
它找到了使用"快速检查"算法(默认情况下)需要传输的文件,该算法查找已更改的文件已更改的文件。
当快速检查表示不需要更新文件的数据时,在目标文件中,在目标文件上进行任何更改。
rsync的更多功能包括:
支持复制链接,设备,业主,组和权限和排除 - 从类似于GNU Tara CVS的选项,排除模式以忽略CVS将ignorecan使用任何透明远程shell,包括SSH或者RSHDOES不需要超级用户权限文件传输以最大限度地减少匿名或者经过身份验证的rsync守护程序的延迟成本(非常适合镜像)
在高水平,以下是使用rsync时的语法
在本地机器/计算机上使用它:
rsync [OPTION…] …
通过远程shell使用它:
从远程主机中删除文件:
rsync [OPTION…] [Hyman@theitroad]REMOTE-HOST:…
将文件从本地推送到远程主机:
rsync [OPTION…] … [Hyman@theitroad]REMOTE-HOST:
rsync最常见的选项
-v, - 鼠标增加炫耀q,-quiet抑制非错误消息-r,-rocurnive重复到目录-o,-OWNER保存所有者(仅限超级用户) - 在TRANSIF-Z期间进行进展, - Compress压缩传输期间的文件数据, - ard-links保留了人类可读格式-w中的硬链接-h,-human可读输出编号-w,-whole文件复制文件。
rsync默认递增副本。
此选项强制将其复制到目的地中的整个文件中删除删除文件,但缺少源 - e,指定要使用的远程shell,例如ssh-max-size = size,不要传输大于大小大小的任何文件size = size不会传输小于大小的任何文件
与rsync一起使用有吨的其他选项。
请查看其man 的页面。
安装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的例子
将本地计算机上的文件复制到目录
rsync -azvh --progress forgeeks.tar /tmp/
在一个目录中同步文件在本地计算机上的一个目录中的文件
rsync -arvzh --progress /home/tech/django//home/pench/backup/
将本地目录中的复制/同步文件复制到远程主机
rsync -arvh --progress /home/tech/django/Hyman@theitroad:/tmp/django-backup/
将远程主机复制/同步文件到本地计算机
rsync -arvh --progress Hyman@theitroad:/home/pench/flask//home/tech/flask/
使用ssh复制/同步文件。
SSH在安全的隧道上提供文件传输,并且rsync可以从中受益,特别是如果我们在不安全的网络上传输/同步文件。
其中我们将使用-e选项。
遥控到本地
rsync -arvhe ssh --progress Hyman@theitroad:/home/pench/flask//home/tech/flask/
遥远的地方
rsync -arvhe ssh --progress /home/tech/django/Hyman@theitroad:4/tmp/django-backup/
用排除选项复制/同步文件
我们可以使用正则表达式(Regex)包含并排除来自Sync的文件
rsync -avzh --progress --include '.txt' --exclude '.pdf' Hyman@theitroad:/tmp/django-backup//home/tech/django/
上面的将包括以TXT扩展结尾的所有文件,并在同步期间排除以PDF扩展结尾的所有文件
复制/同步文件不大于给定大小的文件
遥远的地方
rsync -avzhe ssh --max-size='50k' /home/tech/django/Hyman@theitroad:/tmp/django-backup/
上面,/home/tech/django /目录中的任何大于50k的文件都不会被复制到远程站点。
复制/同步文件不小于给定大小的文件
rsync -avzhe ssh --min-size='50k' /home/tech/django/Hyman@theitroad:/tmp/django-backup/
其中任何小于/home/tech/django /目录中的50k的文件将不会被复制到远程站点。