rsync
是一个用于在本地和远程计算机之间同步文件和目录的命令行工具。它具有许多强大的功能,包括增量传输、压缩和保留权限等。以下是一些 rsync
的常用选项和用法示例:
基本用法
rsync [OPTION]... SRC [SRC]... DEST
常用选项
-a
或--archive
:归档模式,表示递归复制,并保持所有文件属性,相当于-rlptgoD
-v
或--verbose
:显示详细信息-z
或--compress
:在传输过程中压缩文件数据-P
:显示传输进度并保持部分传输的文件,相当于--partial --progress
-r
或--recursive
:递归处理子目录-l
或--links
:复制符号链接-h
或--human-readable
:以人类可读的格式输出文件大小-e
:指定远程 shell 程序,例如 ssh
本地到本地同步
将 /source/directory/
目录中的内容同步到 /destination/directory/
目录:
rsync -av /source/directory/ /destination/directory/
本地到远程同步
将本地目录 /source/directory/
中的内容同步到远程主机 remotehost
的 /destination/directory/
:
rsync -avz /source/directory/ user@remotehost:/destination/directory/
远程到本地同步
将远程主机 remotehost
的 /source/directory/
中的内容同步到本地目录 /destination/directory/
:
rsync -avz user@remotehost:/source/directory/ /destination/directory/
仅同步修改过的文件
使用 --update
选项仅同步修改过的文件:
rsync -avu /source/directory/ /destination/directory/
删除目标目录中源目录中没有的文件
使用 --delete
选项删除目标目录中源目录中没有的文件:
rsync -av --delete /source/directory/ /destination/directory/
排除某些文件或目录
使用 --exclude
选项排除特定的文件或目录:
rsync -av --exclude 'node_modules' /source/directory/ /destination/directory/
示例命令
-
从本地目录同步到远程服务器:
rsync -avz -e ssh /path/to/local/dir/ user@remotehost:/path/to/remote/dir/
-
从远程服务器同步到本地目录:
rsync -avz -e ssh user@remotehost:/path/to/remote/dir/ /path/to/local/dir/
-
仅同步修改过的文件并显示传输进度:
rsync -avzu --progress /source/directory/ /destination/directory/
使用 -e
选项的示例
-e
选项用于指定用于远程传输的远程 shell 程序(例如 ssh
)。默认情况下,rsync
会使用 ssh
进行远程连接,但你可以通过 -e
选项指定其他的远程 shell 或自定义 ssh
参数。
-
指定使用
ssh
进行远程传输:rsync -avz -e ssh /path/to/local/dir/ user@remotehost:/path/to/remote/dir/
-
指定自定义的
ssh
参数:如果你想使用特定的
ssh
参数,比如更改端口号,可以这样做:rsync -avz -e 'ssh -p 2222' /path/to/local/dir/ user@remotehost:/path/to/remote/dir/
这里,
-p 2222
指定使用ssh
的 2222 端口。 -
使用不同的远程 shell 程序:
虽然通常情况下会使用
ssh
,但你也可以指定其他远程 shell 程序,例如rsh
:rsync -avz -e rsh /path/to/local/dir/ user@remotehost:/path/to/remote/dir/
具体示例
-
使用默认的
ssh
进行远程同步:rsync -avz -e ssh /home/user/Documents/ user@remotehost:/backup/Documents/
-
使用
ssh
并指定端口号:rsync -avz -e 'ssh -p 2222' /home/user/Documents/ user@remotehost:/backup/Documents/
-
使用
ssh
并指定使用特定的身份验证密钥文件:rsync -avz -e 'ssh -i /path/to/private_key' /home/user/Documents/ user@remotehost:/backup/Documents/
-
使用
rsh
进行远程同步:rsync -avz -e rsh /home/user/Documents/ user@remotehost:/backup/Documents/