玩一下rsync

本文详细介绍rsync命令的使用方法及参数解释,适用于远程主机的增量文件复制和带有软硬链接的目录同步。文章涵盖命令展示、参数说明及其它常用选项,并提供实际应用场景建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 目的说明
  2. 命令展示
  3. 参数说明
  4. 其他参数展示(即使现在用不到)
  5. 粗略意见

 

(一) 目的说明

  • 向远程主机拷贝文件,如果远程主机有同名文件则进行对其备份到指定目录

 

(二) 命令展示

  • # >  now=`date +%Y%m%d%H%M%S`
  • # > rsync -Ivb --suffix="_$now" --backup-dir=/root/backup deploy_gunlei_erp.py root@server_ip_address:/root

 

(三)参数说明

  • -I(大写i): --ignore-times    don't skip files that match in size and mod-time 意思就是不跳过任何一个文件
  • -v:  --verbose    increase verbosity 增加赘言等于可视化显示
  • -b: --backup    make backups  制作备份
  • --sufix  set backup suffix (default ~)  设置备份后缀名(默认是~)
  • --backup-dir    make backups into hierarchy based in DIR    指定备份目录

(四)其他参数展示

  • -q, --quiet                 suppress non-error messages
        --no-motd               suppress daemon-mode MOTD (see manpage caveat)
    -c, --checksum              skip based on checksum, not mod-time & size
    -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
        --no-OPTION             turn off an implied OPTION (e.g. --no-D)
    -r, --recursive             recurse into directories
    -R, --relative              use relative path names
        --no-implied-dirs       don't send implied dirs with --relative
    -u, --update                skip files that are newer on the receiver
        --inplace               update destination files in-place (SEE MAN PAGE)
        --append                append data onto shorter files
        --append-verify         like --append, but with old data in file checksum
    -d, --dirs                  transfer directories without recursing
    -l, --links                 copy symlinks as symlinks
    -L, --copy-links            transform symlink into referent file/dir
        --copy-unsafe-links     only "unsafe" symlinks are transformed
        --safe-links            ignore symlinks that point outside the source tree
        --munge-links           munge symlinks to make them safer (but unusable)
    -k, --copy-dirlinks         transform symlink to a dir into referent dir
    -K, --keep-dirlinks         treat symlinked dir on receiver as dir
    -H, --hard-links            preserve hard links
    -p, --perms                 preserve permissions
    -E, --executability         preserve the file's executability
        --chmod=CHMOD           affect file and/or directory permissions
    -A, --acls                  preserve ACLs (implies --perms)
    -X, --xattrs                preserve extended attributes
    -o, --owner                 preserve owner (super-user only)
    -g, --group                 preserve group
        --devices               preserve device files (super-user only)
        --copy-devices          copy device contents as regular file
        --specials              preserve special files
    -D                          same as --devices --specials
    -t, --times                 preserve modification times
    -O, --omit-dir-times        omit directories from --times
    -J, --omit-link-times       omit symlinks from --times
        --super                 receiver attempts super-user activities
        --fake-super            store/recover privileged attrs using xattrs
    -S, --sparse                handle sparse files efficiently
        --preallocate           allocate dest files before writing them
    -n, --dry-run               perform a trial run with no changes made
    -W, --whole-file            copy files whole (without delta-xfer algorithm)
    -x, --one-file-system       don't cross filesystem boundaries
    -B, --block-size=SIZE       force a fixed checksum block-size
    -e, --rsh=COMMAND           specify the remote shell to use
        --rsync-path=PROGRAM    specify the rsync to run on the remote machine
        --existing              skip creating new files on receiver
        --ignore-existing       skip updating files that already exist on receiver
        --remove-source-files   sender removes synchronized files (non-dirs)
        --del                   an alias for --delete-during
        --delete                delete extraneous files from destination dirs
        --delete-before         receiver deletes before transfer, not during
        --delete-during         receiver deletes during the transfer
        --delete-delay          find deletions during, delete after
        --delete-after          receiver deletes after transfer, not during
        --delete-excluded       also delete excluded files from destination dirs
        --ignore-missing-args   ignore missing source args without error
        --delete-missing-args   delete missing source args from destination
        --ignore-errors         delete even if there are I/O errors
        --force                 force deletion of directories even if not empty
        --max-delete=NUM        don't delete more than NUM files
        --max-size=SIZE         don't transfer any file larger than SIZE
        --min-size=SIZE         don't transfer any file smaller than SIZE
        --partial               keep partially transferred files
        --partial-dir=DIR       put a partially transferred file into DIR
        --delay-updates         put all updated files into place at transfer's end
    -m, --prune-empty-dirs      prune empty directory chains from the file-list
        --numeric-ids           don't map uid/gid values by user/group name
        --usermap=STRING        custom username mapping
        --groupmap=STRING       custom groupname mapping
        --chown=USER:GROUP      simple username/groupname mapping
        --timeout=SECONDS       set I/O timeout in seconds
        --contimeout=SECONDS    set daemon connection timeout in seconds
    -M, --remote-option=OPTION  send OPTION to the remote side only
        --size-only             skip files that match in size
        --modify-window=NUM     compare mod-times with reduced accuracy
    -T, --temp-dir=DIR          create temporary files in directory DIR
    -y, --fuzzy                 find similar file for basis if no dest file
        --compare-dest=DIR      also compare destination files relative to DIR
        --copy-dest=DIR         ... and include copies of unchanged files
        --link-dest=DIR         hardlink to files in DIR when unchanged
    -z, --compress              compress file data during the transfer
        --compress-level=NUM    explicitly set compression level
        --skip-compress=LIST    skip compressing files with a suffix in LIST
    -C, --cvs-exclude           auto-ignore files the same way CVS does
    -f, --filter=RULE           add a file-filtering RULE
    -F                          same as --filter='dir-merge /.rsync-filter'
                                repeated: --filter='- .rsync-filter'
        --exclude=PATTERN       exclude files matching PATTERN
        --exclude-from=FILE     read exclude patterns from FILE
        --include=PATTERN       don't exclude files matching PATTERN
        --include-from=FILE     read include patterns from FILE
        --files-from=FILE       read list of source-file names from FILE
    -0, --from0                 all *-from/filter files are delimited by 0s
    -s, --protect-args          no space-splitting; only wildcard special-chars
        --address=ADDRESS       bind address for outgoing socket to daemon
        --port=PORT             specify double-colon alternate port number
        --sockopts=OPTIONS      specify custom TCP options
        --blocking-io           use blocking I/O for the remote shell
        --stats                 give some file-transfer stats
    -8, --8-bit-output          leave high-bit chars unescaped in output
    -h, --human-readable        output numbers in a human-readable format
        --progress              show progress during transfer
    -P                          same as --partial --progress
    -i, --itemize-changes       output a change-summary for all updates
        --out-format=FORMAT     output updates using the specified FORMAT
        --log-file=FILE         log what we're doing to the specified FILE
        --log-file-format=FMT   log updates using the specified FMT
        --password-file=FILE    read daemon-access password from FILE
        --list-only             list the files instead of copying them
        --bwlimit=RATE          limit socket I/O bandwidth
        --stop-at=y-m-dTh:m     Stop rsync at year-month-dayThour:minute
        --time-limit=MINS       Stop rsync after MINS minutes have elapsed
        --outbuf=N|L|B          set output buffering to None, Line, or Block
        --write-batch=FILE      write a batched update to FILE
        --only-write-batch=FILE like --write-batch but w/o updating destination
        --read-batch=FILE       read a batched update from FILE
        --protocol=NUM          force an older protocol version to be used
        --iconv=CONVERT_SPEC    request charset conversion of filenames
        --checksum-seed=NUM     set block/file checksum seed (advanced)
        --noatime               do not alter atime when opening source files
    -4, --ipv4                  prefer IPv4
    -6, --ipv6                  prefer IPv6
        --version               print version number

(五)粗略意见

  • rsync玩法有很多,适合向远程主机拷贝增量文件和带有软硬连接的目录.
  • scp用法比较简单,适合向远程主机拷贝覆盖性文件,例如集群内配置文件修改参数需要同步配置文件等.
<think>好的,用户想深入学习rsync工具。首先,我需要确定用户已经掌握了哪些基础知识。rsync是一个功能强大的文件同步工具,常用于备份和镜像,支持增量传输,节省带宽和时间。用户可能已经了解基本用法,但希望深入理解其高级功能和内部机制。 接下来,用户的潜在需求可能包括优化同步速度、处理复杂目录结构、排除特定文件、保证数据安全等。也有可能用户是在管理服务器或需要自动化脚本,因此需要了解如何集成rsync到脚本或定时任务中,比如使用cron。 另外,用户可能对rsync的算法感兴趣,想知道它如何实现差异传输和校验。或者想了解在跨平台使用时的注意事项,比如Windows和Linux之间的同步,权限问题如何处理。 需要覆盖的内容应包括基本命令结构、常用参数详解,如-a、-v、-z、--delete等,以及排除选项--exclude和--exclude-from。同时,高级话题如守护进程模式,使用rsync daemon进行网络传输,SSH加密传输,带宽限制,部分传输和断点续传等。 还需要提醒用户注意常见问题,比如权限问题、符号链接处理、空间不足的情况,以及如何通过日志和dry-run选项测试命令,避免误操作。此外,资源推荐也很重要,比如官方文档、教程链接、书籍和相关工具的比较,帮助用户进一步学习。 最后,用户可能有实际应用场景,比如定期备份网站数据,同步开发环境,或者分布式系统间的文件同步。需要确保提供的示例和注意事项贴近实际应用,解决用户可能遇到的典型问题,如处理大文件、网络中断恢复等。</think>`rsync` 是一个高效的文件同步工具,广泛用于备份、镜像和增量传输。它通过差异算法(仅传输修改部分)显著减少数据传输量,支持本地与远程同步。以下是深入学习 `rsync` 的核心内容和实用指南: --- ### **一、核心功能与优势** 1. **增量传输** 仅传输源与目标之间的差异部分,大幅节省带宽和时间。 2. **保留文件属性** 通过 `-a`(归档模式)保留权限、时间戳、所有者等信息。 3. **压缩传输** `-z` 参数启用压缩,加速网络传输。 4. **灵活路径支持** 支持本地路径(`/path/to/src`)和远程路径(`user@host:/path/to/dest`)。 5. **断点续传** `--partial` 保留部分传输的文件,`--progress` 显示实时进度。 --- ### **二、常用参数详解** | 参数 | 作用 | |------|------| | `-a` | 归档模式(保留属性,递归同步)| | `-v` | 显示详细输出 | | `-z` | 压缩传输数据 | | `--delete` | 删除目标端多余文件(保持严格同步)| | `-n` (`--dry-run`) | 模拟运行,不实际操作 | | `--exclude="*.log"` | 排除指定文件/目录 | | `--bwlimit=1000` | 限制带宽(单位:KB/s) | | `-e "ssh"` | 指定远程Shell(如SSH加密)| --- ### **三、典型使用场景** #### 1. **本地同步** ```bash rsync -av /source/directory/ /destination/directory/ # 注意末尾的 `/`:有斜杠同步目录内容,无斜杠同步目录本身 ``` #### 2. **远程同步(SSH加密)** ```bash # 推送到远程服务器 rsync -avz -e "ssh -p 2222" /local/path/ user@remote_host:/remote/path/ # 从远程服务器拉取 rsync -avz user@remote_host:/remote/path/ /local/path/ ``` #### 3. **删除目标端多余文件** ```bash rsync -av --delete /source/ /destination/ ``` #### 4. **排除特定文件** ```bash rsync -av --exclude="*.tmp" --exclude="cache/" /source/ /destination/ # 或从文件读取排除规则 rsync -av --exclude-from="exclude_list.txt" /source/ /destination/ ``` #### 5. **限速传输(避免占用带宽)** ```bash rsync -avz --bwlimit=500 /source/ user@remote_host:/destination/ ``` --- ### **四、高级用法** #### 1. **守护进程模式(rsyncd)** - **配置服务端** 编辑 `/etc/rsyncd.conf`: ```ini [backup] path = /data/backup comment = Backup Directory read only = no auth users = backup_user secrets file = /etc/rsyncd.secrets ``` - **客户端同步** ```bash rsync -av /local/path/ backup_user@remote_host::backup ``` #### 2. **部分传输与断点续传** ```bash rsync -av --partial --progress /large_file user@remote_host:/destination/ ``` #### 3. **带宽调度(后台任务)** ```bash # 使用nohup或screen保持会话 nohup rsync -avz /source/ user@remote_host:/destination/ > rsync.log 2>&1 & ``` --- ### **五、常见问题与调试** 1. **权限问题** 使用 `sudo` 或确保目标目录可写。远程同步时检查SSH密钥配置。 2. **符号链接处理** `-a` 包含 `-l`(保留符号链接),使用 `-L` 可跟随链接复制实际文件。 3. **空间不足** 通过 `df -h` 检查磁盘,用 `--max-size=100M` 限制同步文件大小。 4. **测试命令安全性** 始终先运行 `rsync -avn` 观察模拟结果,避免误删数据。 --- ### **六、学习资源推荐** 1. **官方文档** [rsync man page](https://download.samba.org/pub/rsync/rsync.1)(命令 `man rsync`) 2. **深入教程** - [Rsync User Guide](https://rsync.samba.org/how-rsync-works.html) - [Linuxize Rsync Tutorial](https://linuxize.com/post/how-to-use-rsync-for-local-and-remote-data-transfer-and-synchronization/) 3. **书籍章节** 《Linux命令行与Shell脚本编程大全》中文件同步部分。 --- 通过结合实践(如定期备份、跨服务器同步)和阅读文档,你会快速掌握 `rsync` 的高效用法!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值