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. 同步本地目录
    1
    
    rsync -av /home/user/data /backup
    

    /home/user/data 目录同步到 /backup 目录。

  2. 排除特定目录
    1
    
    rsync -av --exclude 'tmp' /home/user/data /backup
    

    /home/user/data 目录同步到 /backup 目录,但排除 tmp 目录。

  3. 同步到远程主机
    1
    
    rsync -avz /home/user/data user@remote_host:/backup
    

    将本地 /home/user/data 目录同步到远程主机 remote_host/backup 目录,并在传输过程中进行压缩。

  4. 从远程主机同步到本地
    1
    
    rsync -avz user@remote_host:/backup /home/user/data
    

    将远程主机 remote_host/backup 目录同步到本地的 /home/user/data 目录,并在传输过程中进行压缩。

  5. 显示进度
    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
2
3
4
5
6
/source/directory/
├── file1.txt
├── file2.txt
└── ignore_directory/
    ├── file3.txt
    └── file4.txt

使用上述 rsync 命令:

1
rsync -av --exclude 'ignore_directory' /source/directory/ /destination/directory/

结果是:

1
2
3
/destination/directory/
├── file1.txt
└── file2.txt

其他选项

  • 如果你有多个目录或文件需要排除,可以使用多个 --exclude 选项:
1
rsync -av --exclude 'ignore_directory1' --exclude 'ignore_directory2' /source/directory/ /destination/directory/
  • 你也可以使用 --exclude-from 选项从文件中读取排除的目录和文件列表。假设排除列表文件 exclude-list.txt 内容如下:
1
2
3
ignore_directory1
ignore_directory2
ignore_file.txt

使用命令:

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
2
3
4
5
6
/source/directory/
├── file1.txt
├── file2.txt
└── ignore_directory/
    ├── file3.txt
    └── file4.txt

使用上述 rsync 命令:

1
rsync -av --exclude 'ignore_directory' /source/directory/ user@remote_host:/destination/directory/

结果是远程主机 remote_host 上的 /destination/directory/ 目录结构为:

1
2
3
/destination/directory/
├── file1.txt
└── file2.txt

使用多个排除选项

如果你有多个目录或文件需要排除,可以使用多个 --exclude 选项:

1
rsync -av --exclude 'ignore_directory1' --exclude 'ignore_directory2' /source/directory/ user@remote_host:/destination/directory/

使用排除列表文件

你也可以使用 --exclude-from 选项从文件中读取排除的目录和文件列表。假设排除列表文件 exclude-list.txt 内容如下:

1
2
3
ignore_directory1
ignore_directory2
ignore_file.txt

使用命令:

1
rsync -av --exclude-from='exclude-list.txt' /source/directory/ user@remote_host:/destination/directory/

结论

通过以上方法,你可以使用 rsync 高效地实现远程目录拷贝,同时忽略指定的目录或文件。这些选项提供了灵活的排除机制,使 rsync 成为处理远程文件同步和备份任务的强大工具。