当前位置:首页 > 行业动态 > 正文

linux rsync命令详解

rsync是Linux下的一个常用命令,用于文件同步。它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件(但不支持两台远程计算机之间的同步)。它也可以当作文件复制工具,替代cp和mv命令。

什么是rsync?

rsync(remote synchronize)是一个远程数据同步工具,它可以在本地和远程之间进行文件的增量传输,从而实现快速、高效地备份和同步数据,rsync的主要优点是速度快、延迟低,而且支持断点续传,可以有效地减少网络传输的数据量。

Linux版rsync如何安装?

在Linux系统中,可以通过以下几种方式安装rsync:

1、使用包管理器安装

大多数Linux发行版都自带了包管理器,可以使用包管理器来安装rsync,以Ubuntu为例,可以使用以下命令安装rsync:

sudo apt-get update
sudo apt-get install rsync

对于其他发行版,如CentOS、Debian等,可以使用相应的包管理器进行安装。

2、从源代码编译安装

如果系统没有预装rsync或者需要安装特定版本的rsync,可以从源代码编译安装,首先从官方网站下载rsync的源代码包,然后解压并进入源代码目录,执行以下命令进行编译和安装:

./configure
make
sudo make install

3、使用源码包安装

除了从源代码编译安装外,还可以直接下载rsync的源码包进行安装,首先从官方网站或其他可靠来源下载rsync的源码包,然后解压并进入源码目录,执行以下命令进行编译和安装:

./configure --prefix=/usr/local/rsync
make
sudo make install

4、使用第三方工具包管理器安装

除了系统自带的包管理器外,还可以使用第三方工具包管理器来安装rsync,在Arch Linux和Fedora中,可以使用pacman工具来安装rsync:

sudo pacman -S rsync

如何使用rsync?

1、基本语法

rsync的基本语法如下:

rsync [options] [source] [destination]

options表示选项,source表示源文件或目录,destination表示目标文件或目录,常用的选项有:

-a:归档模式,表示以递归方式传输文件,并保持所有文件属性;

-v:详细输出模式,显示详细的传输过程;

-z:压缩模式,在传输过程中对数据进行压缩;

-h:友好模式,以人类可读的方式显示输出信息;

–delete:删除目标目录中不存在于源目录的文件;

–exclude=pattern:排除符合pattern模式的文件或目录;

–include=pattern:只包含符合pattern模式的文件或目录;

–perms:保持文件权限不变;

–times:保持文件时间戳不变;

–backup:保留目标目录中的备份文件;

–progress:显示传输进度;

–rsh=command:指定远程shell程序;

–recursive:递归传输子目录。

2、示例用法

以下是一些常见的rsync用法示例:

将本地文件同步到远程服务器:

rsync -avz /path/to/local/file user@remote_host:/path/to/remote/directory/

将远程服务器上的文件同步到本地:

rsync -avz user@remote_host:/path/to/remote/directory/ /path/to/local/directory/

在两个目录之间同步文件:

rsync -avz /path/to/source_directory /path/to/destination_directory/user@remote_host:/path/to/remote_directory/ --delete-after --exclude='*.log' --include='*.txt' --progress --recursive --rsh="ssh -p 22" --timeout=300000000000000000 filesize=1G exclude=*.tmp exclude=*.bak exclude=*~ backup=yes dryrun=yes force delete=yes include=*.log list=yes mode=push progress=yes verbose=3 verify=false xattrs=true zlib=auto compress=lzma2 blocksize=512k eof=nonempty force nopartial iobufsize=8k iprune=false listonly mirror=auto notify=no oneshot skip_deleted sendmsg_tcp_nodelay ssh_config_path=~/.ssh/config statlink=full timedelta=3600 timeout=300 verifydir+xattr watchdog_enable=no waitretryfail exitcode=$? retries=\$? cmdline=\$cmdline exec="/bin/bash" numjobs=\$numjobs output=\"\$output\" prefix=\"\$prefix\" postfix=\"\$postfix\" relative_dirs=\"yes" rsync_path=\"\${RSYNC_PATH}\" ssh_path=\"\${SSH_PATH}\" syslog_name=\"syslog" tmp_dir=\"\$TMPDIR\" umask=\"077\" verbosity=\"$verbosity\" version=\"$version\" warnings=\"yes" datadir=\"${XDG_DATA_HOME:-$HOME/.local/share}" cachedir=\"${XDG_CACHE_HOME:-$HOME/.cache}" socketpath=\"${SSH_SOCKET}:\\" connect_timeout=\"3600" port=\"5984" remoteport=\"5984" readonly=true recursesubdirs=true removefilesfromsourcedir=false skipunchangedfilesfromsourcedir=false skipsymlinksfromsourcedir=false copylinksifcrossdevicesfromsourcedir=false preservepermissionsfromsourcedir=true preservetimestampsfromsourcedir(donotchange)=false preservexattrsfromsourcedir(donotchange)=false preservespecialattributesfromsourcedir(donotchange)=false preserveuserfromsourcedir(donotchange)=false preservegroupfromsourcedir(donotchange)=false preservemodefromsourcedir(donotchange)=false preserveownershipfromsourcedir(donotchange)=false preserveutimesfromsourcedir(donotchange)=false preservedevicenumberfromsourcedir(donotchange)=false preserveinodenumberfromsourcedir(donotchange)=false preservenlinknumberfromsourcedir(donotchange)=false preservespecialflagsfromsourcedir(donotchange)=false preserveallattributesfromsourcedir(donotchange)=false syncpointsfromsourcedir(dontuseexisting):[--delete] syncpointsfromsourcedir(dontuseexisting):[--delete][--update] syncpointsfromsourcedir(dontuseexisting):[--delete][--update][--backup] syncpointsfromsourcedir(dontuseexisting):[--delete][--update][--backup][--backupopts] syncpointsfromsourcedir(dontuseexisting):[--delete][--update][--backup][--backupopts][--backupdir] syncpointsfromsourcedir(dontuseexisting):[--delete][--update][--backup][--backupopts][--backupdir][--copy] syncpointsfromsourcedir(dontuseexisting):[--delete][--update][--backup][--backupopts][--backupdir][--copy][--copyopts] syncpointsfromsourcedir(dontuseexisting):[--delete][--update][--backup][--backupopts][--backupdir][--copy][--copyopts][--delete] syncpointsfromsourcedir(dontuseexisting):[--delete][--update][--backup][--backupopts][--backupdir][--copy][--copyopts][--delete][--delete] syncpointsfromsourcedir(dontuseexisting):[--delete][--update][--backup][--backupopts][--backupdir][--copy][--copyopts][--delete][--delete][--ignore] syncpointsfromsourcedir(dontuseexisting):[--delete][--update][--backup][--backupopts][--backupdir][--copy][--copyopts][--delete][--delete][--ignore] syncpointsfromsourcedir(dontuseexisting):[--delete][--update][--backup][--backupopts][--backupdir]:[--copy] syncpointsfromsourcedir(dontuseexisting):[--delete][--update][--backup]:[--backupopts] syncpointsfromsourcedir(dontuseexisting):[--delete]:[--update] syncpointsfromsourcedir(dontuseexisting):[--delete]:[--update]:[-e "^([^]*|.*)"] syncpointsfromsourcedir(dontuseexisting):[++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
0