Rsync用于在两个远程计算机之间同步文件和文件夹。它仅通过传输源和目标之间的差别来提供快速的增量文件传输。
Rsync可用于镜像数据,增量备份,在系统之间复制文件,可取代scp,sftp和cp日常等使用的命令。
rsync命令已预安装在大多数Linux发行版和macOS。可以运行命令rsync--version检测是否已安装rysnc,命令将会复印rysnc的版本号rsyncversion3.01。
安装rsync
假如终端提示你bash:commandnotfound:rysnc,说明你的系统没有安装rsync。可以使用发行版的软件包管理器安装rysnc。
假如你的计算机运行的系统是基于Debian的Linux发行版,比如Ubuntu,Linuxmint请运行命令sudoaptinstallrsync安装Rsync。
假如你的计算机运行的系统是基于RedHat的Linux发行版。诸如CentOS,Fedora。请运行命令sudoyuminstallrsync安装Rsync。
Rsync命令
rsync句型有三种,分别是本地到本地方式LocaltoLocal,本地到远程LocaltoRemote,远程到本地RemotetoLocal。
其中OPTION是rsync选项。SRC是源目录。DEST是目标目录。USER是远程用户名。HOST是远程主机名名称linux shell,可以是IP地址或则可解释的域名。
Local to Local: rsync [OPTION]... [SRC]... DEST
Local to Remote: rsync [OPTION]... [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... [USER@]HOST:SRC... [DEST]
rsync提供了许多控制其行为的选项。以下是最常常使用的选项。
-a/--archive存档模式linux 发邮件,等效于-rlptgoD。此选项指示rsync递归同步目录,传输特殊设备和块设备,保留符号链接,组,所有权和权限等。
-z/--compress,此选项将强制rsync在数据发送给目标计算机之前对数据进行压缩。
-P等效于--partial--progress。使用此选项时,rsync将在传输过程中显示进度条并保留部份传输的文件。在慢速或不稳定的网路联接传输大文件时特别有用。
--delete使用此选项时,rsync将从目标位置删掉相同的文件。适宜用于镜像文件。
-q/--quiet此选项严禁显示非错误消息。-e此选项使您可以选择其他远程shell程序。默认使用ssh。
Rsync基础
rysnc最简单的用法就是在本地的目录之间复制文件。运行rysnc命令的用户必须对源目录或则文件具有读取权限,而且对目标目录具有写入权限。
假如目标参数未指定文件名,rsync将会保留原始文件名称。要使用其它文件名称保复制文件,请在目标参数指定文件名。
值得一提的是rsync命令会按照源目录是否使用斜杠/,而又不同的处理方法。
若果在源目录尾部添加斜杠,rsync会将目录的内容复制到目标目录。在省略斜杠,rsync则会将源目录复制到目标目录。
rsync -a /opt/filename.zip /tmp/newfilename.zip
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
Rsync远程同步数据
当使用rsync进行远程传输时,rsync必须安装在源计算机和目标计算机。rsync默使用SSH作为远程shell程序。
倘若您仍未为远程计算机设置SSH无密码登入,rsync会要求您输入用户名和密码。远程计算机SSH服务窃听的端口不是默认端口22时,请使用-e选项指定端口。
当传输大量数据或则大文件时,建议在screen,nohup,tmux运行rsync命令或使用rsync命令的-P选项。
Rsync增量备份/更新/复制
在增量复制或则备份时,强烈建议使用-t选项,该选项用与保持文件的mtime属性不变。mtime是文件的更改时间。
假如没有指定-t选项时,目标文件mtime属性会设置为系统时间,造成上次更新检查到mtime不同,因而造成增量更新无效。
一般你可能还须要显示rsync同步过程的详尽信息,使用-v选项。确认是否正确实现增量同步。
对于同步大量的数据或则大文件,rsync命令的-P选项可以显示进度并保留部份传输的文件。
remote_user是远程计算机的用户名,remote_host_or_ip远程计算机的IP地址或则可解释的域名。
rsync -avtP /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Rsync同步本地目录到远程计算机
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Rsync同步远程计算机目录到本地目录
rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Rsync指定SSH端口
rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Rsync后台同步数据
rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/
排除文件和目录
当你要排除文件或目录时,您须要使用源目录的相对路径。有两种方法可以排除文件和目录。
第一种方法是使用rsync命令的--exclude选项,在命令行指定要排除的文件和目录。--exclude选项可以重复使用多次排除多个文件与目录。
第二种方法是使用rsync命令的--exclude-from选项并指定一个文件linux 下载指定文件夹,该文件包含要排除的目录与文件的路径。
在以下示例中,排除src_directory目录的node_modules和tmp目录,也就是目录src_directory/node_modules,src_directory/tmp。
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
node_modules
tmp
/exclude-file.txt推论
在本教程中,您学习了怎样在Linux使用Rsync命令复制和同步文件和目录。如有任何疑惑linux 下载指定文件夹,请随时发表评论。