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ệprsync
sẽ 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.