linux rsync命令是什么
rsync
是一个用于在本地或远程同步文件和目录的开源实用工具。它非常强大和灵活,支持递归传输、保持文件权限、压缩传输等功能,使其成为文件同步和备份的首选工具之一。
以下是 rsync
的一些常用选项和示例:
常用选项
-a, --archive
:归档模式,等同于-rlptgoD
,保留文件的权限、时间戳、符号链接等。-v, --verbose
:详细模式,显示传输过程中的详细信息。-z, --compress
:在传输过程中压缩文件以节省带宽。-P
:显示传输进度并部分保留已传输的文件(等同于--partial --progress
)。--exclude
:排除指定的文件或目录。--delete
:删除目标目录中在源目录中不存在的文件。
基本用法
本地复制
1 | rsync -av /source/directory /destination/directory |
将 /source/directory
复制到 /destination/directory
。
远程复制
1 | rsync -av /local/directory user@remote_host:/remote/directory |
将本地目录 /local/directory
复制到远程主机 remote_host
的 /remote/directory
。
1 | rsync -av user@remote_host:/remote/directory /local/directory |
将远程主机 remote_host
的 /remote/directory
复制到本地目录 /local/directory
。
使用 --exclude
排除特定目录
1 | rsync -av --exclude 'exclude_directory' /source/directory user@remote_host:/remote/directory |
将本地目录 /source/directory
复制到远程主机 remote_host
的 /remote/directory
,但排除 exclude_directory
目录。
示例
同步本地目录
1
rsync -av /home/user/data /backup
将
/home/user/data
目录同步到/backup
目录。排除特定目录
1
rsync -av --exclude 'tmp' /home/user/data /backup
将
/home/user/data
目录同步到/backup
目录,但排除tmp
目录。同步到远程主机
1
rsync -avz /home/user/data user@remote_host:/backup
将本地
/home/user/data
目录同步到远程主机remote_host
的/backup
目录,并在传输过程中进行压缩。从远程主机同步到本地
1
rsync -avz user@remote_host:/backup /home/user/data
将远程主机
remote_host
的/backup
目录同步到本地的/home/user/data
目录,并在传输过程中进行压缩。显示进度
1
rsync -avP /home/user/data user@remote_host:/backup
将本地
/home/user/data
目录同步到远程主机remote_host
的/backup
目录,并显示传输进度。
结论
rsync
是一个非常强大且灵活的工具,适用于各种文件同步和备份需求。通过熟练使用 rsync
的各种选项,你可以高效地完成复杂的文件传输和同步任务。
linux rsync命令 详解
rsync
是一个强大的文件同步工具,常用于在本地或远程主机之间复制和同步文件和目录。它支持增量传输、保持文件权限、压缩传输等功能。以下是 rsync
的详细说明和一些示例。
基本语法
1 | rsync [OPTION]... SRC [SRC]... DEST |
SRC
:源文件或目录DEST
:目标文件或目录
常用选项
-a, --archive
:归档模式,相当于-rlptgoD
,保留文件属性。-r, --recursive
:递归处理目录。-l, --links
:保留符号链接。-p, --perms
:保留文件权限。-t, --times
:保持文件修改时间。-g, --group
:保留文件组信息。-o, --owner
:保留文件所有者信息。-D
:保留设备文件和特殊文件。
-v, --verbose
:详细输出。-z, --compress
:在传输过程中压缩文件。-P
:显示传输进度和部分传输的文件(等同于--partial --progress
)。--partial
:保留部分传输的文件,以便恢复。--progress
:显示传输进度。
--exclude
:指定排除的文件或目录模式。--delete
:删除目标目录中在源目录中不存在的文件。--bwlimit=RATE
:限制 I/O 带宽,单位为 KB/s。-e, --rsh=COMMAND
:指定远程 shell 程序。--checksum
:基于文件校验和进行比较,而不是文件大小和修改时间。
示例
本地复制
将本地目录 /source/directory
复制到 /destination/directory
:
1 | rsync -av /source/directory /destination/directory |
远程复制
将本地目录 /local/directory
复制到远程主机 remote_host
的 /remote/directory
:
1 | rsync -av /local/directory user@remote_host:/remote/directory |
将远程主机 remote_host
的 /remote/directory
复制到本地目录 /local/directory
:
1 | rsync -av user@remote_host:/remote/directory /local/directory |
排除特定目录
将本地目录 /source/directory
复制到远程主机 remote_host
的 /remote/directory
,但排除 exclude_directory
:
1 | rsync -av --exclude 'exclude_directory' /source/directory user@remote_host:/remote/directory |
显示进度
在传输过程中显示进度:
1 | rsync -avP /source/directory user@remote_host:/remote/directory |
同步文件并删除目标目录中多余的文件
将本地目录 /source/directory
同步到远程主机 remote_host
的 /remote/directory
,并删除目标目录中多余的文件:
1 | rsync -av --delete /source/directory user@remote_host:/remote/directory |
限制传输带宽
将本地目录 /source/directory
复制到远程主机 remote_host
的 /remote/directory
,并限制传输带宽为 500 KB/s:
1 | rsync -avz --bwlimit=500 /source/directory user@remote_host:/remote/directory |
使用 SSH 进行传输
通过 SSH 进行文件传输:
1 | rsync -avz -e ssh /source/directory user@remote_host:/remote/directory |
基于校验和进行比较
基于文件校验和进行比较,而不是文件大小和修改时间:
1 | rsync -avz --checksum /source/directory user@remote_host:/remote/directory |
结论
rsync
是一个非常强大且灵活的工具,可以满足各种文件同步和备份需求。通过掌握 rsync
的各种选项和用法,你可以高效地完成复杂的文件传输和同步任务。
linux rsync命令 拷贝目录并且忽略指定目录
在 Linux 上使用 rsync
拷贝目录并且忽略指定目录的具体步骤如下。假设你要拷贝 /source/directory
到目标目录 /destination/directory
,但要忽略 ignore_directory
目录。
示例命令
1 | rsync -av --exclude 'ignore_directory' /source/directory/ /destination/directory/ |
详细说明
-a, --archive
:归档模式,表示递归复制目录,并保持文件属性。-v, --verbose
:详细模式,显示传输过程中的信息。--exclude 'ignore_directory'
:指定要排除的目录ignore_directory
。/source/directory/
:源目录路径,末尾的/
表示拷贝目录内的内容。/destination/directory/
:目标目录路径,末尾的/
表示将内容复制到该目录中。
更详细的例子
假设有如下目录结构:
1 | /source/directory/ |
使用上述 rsync
命令:
1 | rsync -av --exclude 'ignore_directory' /source/directory/ /destination/directory/ |
结果是:
1 | /destination/directory/ |
其他选项
- 如果你有多个目录或文件需要排除,可以使用多个
--exclude
选项:
1 | rsync -av --exclude 'ignore_directory1' --exclude 'ignore_directory2' /source/directory/ /destination/directory/ |
- 你也可以使用
--exclude-from
选项从文件中读取排除的目录和文件列表。假设排除列表文件exclude-list.txt
内容如下:
1 | ignore_directory1 |
使用命令:
1 | rsync -av --exclude-from='exclude-list.txt' /source/directory/ /destination/directory/ |
结论
通过以上方法,你可以使用 rsync
高效地复制目录,同时忽略指定的目录或文件。这些选项提供了灵活的排除机制,使 rsync
成为处理文件同步和备份任务的强大工具。
linux rsync命令 远程拷贝目录并且忽略指定目录
使用 rsync
命令可以实现远程拷贝目录并且忽略指定目录。以下是详细步骤和示例。
示例命令
假设你要将本地的 /source/directory
目录拷贝到远程主机 remote_host
的 /destination/directory
,但要忽略 ignore_directory
目录。
1 | rsync -av --exclude 'ignore_directory' /source/directory/ user@remote_host:/destination/directory/ |
详细说明
-a, --archive
:归档模式,表示递归复制目录,并保持文件属性。-v, --verbose
:详细模式,显示传输过程中的信息。--exclude 'ignore_directory'
:指定要排除的目录ignore_directory
。/source/directory/
:源目录路径,末尾的/
表示拷贝目录内的内容。user@remote_host:/destination/directory/
:目标目录路径,格式为user@host:/path
。
更详细的例子
假设有如下本地目录结构:
1 | /source/directory/ |
使用上述 rsync
命令:
1 | rsync -av --exclude 'ignore_directory' /source/directory/ user@remote_host:/destination/directory/ |
结果是远程主机 remote_host
上的 /destination/directory/
目录结构为:
1 | /destination/directory/ |
使用多个排除选项
如果你有多个目录或文件需要排除,可以使用多个 --exclude
选项:
1 | rsync -av --exclude 'ignore_directory1' --exclude 'ignore_directory2' /source/directory/ user@remote_host:/destination/directory/ |
使用排除列表文件
你也可以使用 --exclude-from
选项从文件中读取排除的目录和文件列表。假设排除列表文件 exclude-list.txt
内容如下:
1 | ignore_directory1 |
使用命令:
1 | rsync -av --exclude-from='exclude-list.txt' /source/directory/ user@remote_host:/destination/directory/ |
结论
通过以上方法,你可以使用 rsync
高效地实现远程目录拷贝,同时忽略指定的目录或文件。这些选项提供了灵活的排除机制,使 rsync
成为处理远程文件同步和备份任务的强大工具。