Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
[OPTION]:

- -a, --archive: Nó sẽ kích hoạt chế độ archive, nó copies được các thuộc tính như quyền hạn, thời gian chỉnh sửa, và các loại ngày khác, a đại diện cho
-rlptgoD:
-r: Đệ quy qua các thư mục (thay vì chỉ hoạt động trên các tệp trong thư mục hiện tại)-l: Sao chép các liên kết tượng trưng dưới dạng liên kết tượng trưng mới-p: Duy trì quyền-t: Bảo tồn thời gian sửa đổi-g: Duy trì quyền sở hữu nhóm-o: Duy trì quyền sở hữu của người dùng (chỉ giới hạn đối với người dùng cấp cao khi xử lý các tệp của người dùng khác)-D: Sao chép tệp thiết bịCác tùy chọn đáng chú ý khác bao gồm:
-n: Chạy lệnh khô mà không cần chuyển tệp--list-only: Chỉ hiển thị danh sách các tệprsyncsẽ chuyển-P: Hiển thị tiến trình trên mỗi tệp-v: Hiển thị tiến độ tổng thể, xuất thông tin về từng tệp khi nó hoàn thành-u: Bỏ qua cập nhật tệp đích nếu chúng mới hơn nguồn-q: Chế độ yên lặng. Hữu ích để đưa vào tập lệnh khi đầu ra đầu cuối không được yêu cầu-c: Sử dụng giá trị tổng kiểm tra để xác định tệp nào cần bỏ qua, thay vì thời gian và kích thước sửa đổi--existing: Chỉ cập nhật tệp, nhưng không tạo tệp mới bị thiếu--files-from=FILE: Đọc tệp nguồn danh sách từ tệp văn bản--exclude=PATTERN: Sử dụng PATTERN để loại trừ các tệp khỏi đồng bộ hóa--exclude-from=FILE: Tương tự như trên, nhưng đọc từ một tệp--include=PATTERN: Cũng được sử dụng để phủ định các quy tắc loại trừ--include-from=FILE: Tương tự như trên, nhưng đọc từ một tệp
- -v, --verbose: Lệnh này sẽ giúp hiển thị tiến trình của thao tác.
- -h, --human-readable format: Kết quả dưới định dạng đọc được.
- -z, --compress: Lệnh này sẽ nén data trong quá trình truyền.
- -r : recursive Lệnh này dùng để copy dữ liệu toàn bộ (bao gồm thư mục con).
| TT | Câu lệnh | Ý nghĩa |
| 1 |
rsync [optional modifiers] [SRC] [DEST] |
Tổng quát đồng bộ từ nguồn đến đích: Local, Remote, Daemon |
rsync -r original/ duplicate/ |
Dấu / đặt sau thư mục original dùng để nói rsync copy nội dung từ thư mục gốc đến thư mục duplicate | |
rsync -r original duplicate/ |
Copy 2 chiều, những file nằm trong thư mục duplicate mà không có trong thư mục original sẽ được copy ngược lại | |
rsync -av --dry-run Original/ Duplicate/ |
—dry-run chỉ hiển thị những file sẽ được copy mà không thực sự copy file | |
rsync -av --delete original/ duplicate/ |
Đồng bộ 2 thư mục, nhưng xóa những files bị trùng không có trong thư mục gốc | |
rsync -av --exclude=file1,file2 original/ duplicate/ |
loại trừ file hoặc thư mục con nhất định khi đồng bộ | |
rsync -av --include=L* --exclude=* original/ duplicate/ |
Đẩy file kèm file bắt đầu với chữ cái L, và loại bỏ những files còn lại | |
rsync -av --max-size=10k original/ duplicate/ |
xác định kích thước size dùng để đồng bộ | |
rsync -az ~/Desktop/Original edward@192.168.22.90:~/tmp/ |
sẽ tổng hợp cái files lại và truyền qua mạng | |
rsync -azP [SRC] [DEST] |
P là kết hợp giữa –progress và –partial. Nó sẽ tạo ra thanh progress bar cho biết files đang được chuyển đi và cũng cho phép bạn ngắt việc truyền files | |
rsync -a --delete --backup --backup-dir=/path/to/backup /path/to/SRC [DEST] |
Bạn kết hợp giữa option –backup với –dir để xác định nơi backup được chứa là ở đâu. | |
| rsync -aruv -e ssh ./* root@192.168.11.111:/usr/share/httpd/enable | Đồng bộ qua đường hầm SSH | |
# man rsync
| -v, --verbose | increase verbosity |
| --info=FLAGS | fine-grained informational verbosity |
| --debug=FLAGS | fine-grained debug verbosity |
| --msgs2stderr | special output handling for debugging |
| -q, --quiet | suppress non-error messages |
| --no-motd | suppress daemon-mode MOTD (see 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 |
| -b, --backup | make backups (see --suffix & --backup-dir) |
| --backup-dir=DIR | make backups into hierarchy based in DIR |
| --suffix=SUFFIX | backup suffix (default ~ w/o --backup-dir) |
| -u, --update | skip files that are newer on the receiver |
| --inplace | update destination files in-place |
| --append | append data onto shorter files |
| --append-verify | --append w/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 tree |
| --munge-links | munge symlinks to make them safer |
| -k, --copy-dirlinks | transform symlink to 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 executability |
| --chmod=CHMOD | affect file and/or directory permissions |
| -A, --acls | preserve ACLs (implies -p) |
| -X, --xattrs | preserve extended attributes |
| -o, --owner | preserve owner (super-user only) |
| -g, --group | preserve group |
| --devices | preserve device files (super-user only) |
| --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 | turn sequences of nulls into sparse blocks |
| --preallocate | allocate dest files before writing |
| -n, --dry-run | perform a trial run with no changes made |
| -W, --whole-file | copy files whole (w/o delta-xfer algorithm) |
| --checksum-choice=STR | choose the checksum algorithms |
| -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 remote machine |
| --existing | skip creating new files on receiver |
| --ignore-existing | skip updating files that exist on receiver |
| --remove-source-files | sender removes synchronized files (non-dir) |
| --del | an alias for --delete-during |
| --delete | delete extraneous files from dest dirs |
| --delete-before | receiver deletes before xfer, 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 dest 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 dirs 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 end |
| -m, --prune-empty-dirs | prune empty directory chains from 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 |
| -I, --ignore-times | don't skip files that match size and time |
| --size-only | skip files that match in size |
| -@, --modify-window=NUM | set the accuracy for mod-time comparisons |
| -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 received 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 suffix in LIST |
| -C, --cvs-exclude | auto-ignore files in 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; wildcard chars only |
| --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 |
| --outbuf=N|L|B | set out buffering to None, Line, or Block |
| --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 |
| -M, --remote-option=OPTION | send OPTION to the remote side only |
| --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 |
| --write-batch=FILE | write a batched update to FILE |
| --only-write-batch=FILE | like --write-batch but w/o updating dest |
| --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 |
| -h)--help | show this help (see below for -h comment) |
| --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 |
| -h)--help | show this help (see below for -h comment) |
| synccanalsoberunasada | emon, in which case the following options are |
| ccepted: | run as an rsync daemon |
| --daemon | bind to the specified address |
| --address=ADDRESS | limit socket I/O bandwidth |
| --bwlimit=RATE | specify alternate rsyncd.conf file |
| --config=FILE | override global daemon config parameter |
| -M, --dparam=OVERRIDE | do not detach from the parent |
| --no-detach | listen on alternate port number |
| --port=PORT | override the "log file" setting |
| --log-file=FILE | override the "log format" setting |
| --log-file-format=FMT | specify custom TCP options |
| --sockopts=OPTIONS | increase verbosity |
| -v, --verbose | prefer IPv4 |
| -4, --ipv4 | prefer IPv6 |
| -6, --ipv6 | show this help (if used after --daemon) |
| -h, --help |
Here's how I verify backups to ensure that they're working on my systems:
- Create a restore_test.txt file for each system buried deep in the filesystem.
- Create a script to scrape the backup logs for your restore_test.txt file.
- Select a random system once per week and restore the restore_test.txt file.
- Create a backup_restore_log.txt file and log your weekly progress.
- Prepare to share the backup_restore_log.txt file with your manager in case of a failure, disaster, accident, or neglect.