rsync ( r biểu tượng cảm xúc đồng bộ hóa ) command là một công cụ sao chép tệp có thể đồng bộ hóa tệp trên các đĩa lưu trữ cục bộ cũng như qua mạng.
Nó phổ biến vì nó rất tốt. Nó thường được sử dụng để sao lưu tệp, giữ cho các máy chủ tệp được cập nhật với nhau và để triển khai mã và nội dung cho ứng dụng web tới máy chủ.
rsync có thể và sẽ sao chép mọi tệp mà nó có thể thấy và sẽ đồng bộ hóa dựa trên kích thước tệp và ngày sửa đổi để xem những gì đã thay đổi và những gì cần được cập nhật.
rsync lệnh là BIG và chúng tôi sẽ giúp bạn bắt đầu với một số ứng dụng thực tế sẽ bao gồm các tình huống sử dụng phổ biến nhất trong hướng dẫn này .
Cú pháp
rsync OPTIONS SOURCE DESTINATION
Lưu ý rằng:
- OPTIONS là danh sách các tùy chọn từ danh sách bên dưới, được phân tách bằng dấu cách
- SOURCE là đường dẫn đến nguồn của tệp hoặc thư mục để đồng bộ hóa và có thể bao gồm thông tin chi tiết về máy chủ lưu trữ từ xa
- DESTINATION là đường dẫn đến đích mà bạn muốn đồng bộ hóa tệp hoặc thư mục và có thể bao gồm thông tin chi tiết về máy chủ lưu trữ từ xa
- SOURCE và DESTINATION phải theo thứ tự!
Tùy chọn
Dưới đây là các tùy chọn thường được sử dụng cho rsync , ngay từ hướng dẫn sử dụng:
Nội dung cần sao chép:
-r, --recursive Recurse into directories -R, --relative Use relative path names --exclude=PATTERN Exclude files matching PATTERN --exclude-from=FILE Read exclude patterns from FILE -I, --ignore-times Don't exclude files that match length and time --size-only Only use file size when determining if a file should be transferred [email protected] --modify-window=NUM Timestamp window (seconds) for file match (default=0) --include=PATTERN Don't exclude files matching PATTERN --include-from=FILE Read include patterns from FILE
Cách sao chép:
-n, --dry-run Perform a trial run with no changes made -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 links outside the destination tree --munge-links Munge symlinks to make them safer -H, --hard-links Preserve hard links --devices Preserve device files (super-user only) --specials Preserve special files -D, --devices --specials Preserve devices (super-user only) +files -g, --group Preserve group -o, --owner Preserve owner (super-user only) -p, --perms Preserve permissions --remove-source-files Sender removes synchronized files (non-dir) -t, --times Preserve times -S, --sparse Handle sparse files efficiently -x, --one-file-system Don't cross filesystem boundaries -B, --block-size=SIZE Force a fixed checksum block-size (default 700) -e, --rsh=COMMAND Specify rsh replacement --rsync-path=PATH Specify path to rsync on the remote machine --numeric-ids Don't map uid/gid values by user/group name --timeout=SECONDS Set IO timeout in seconds -W, --whole-file Copy whole files, no incremental checks
Tùy chọn điểm đến:
-a, --archive Archive mode equals -rlptgoD (no -H,-A,-X) -b, --backup Make backups (see --suffix & --backup-dir) --backup-dir=DIR Make backups into this directory -z, --compress Compress file data during the transfer -c, --checksum Skip based on checksum, not mod-time & size -C, --cvs-exclude Auto ignore files in the same way CVS does --existing Only update files that already exist --delete Delete files that don't exist on the sending side --delete-excluded Also delete excluded files on the receiving side --delete-after Receiver deletes after transfer, not during --force Force deletion of directories even if not empty --ignore-errors Delete even if there are IO errors --max-delete=NUM Don't delete more than NUM files --log-file-format=FMT Log file transfers using specified format --partial Keep partially transferred files --progress Show progress during transfer -P Equivalent to --partial --progress --stats Give some file transfer stats -T --temp-dir=DIR Create temporary files in directory DIR --compare-dest=DIR Also compare destination files relative to DIR -u, --update Update only (don't overwrite newer files)
Các tùy chọn khác:
--address=ADDRESS Bind to the specified address --blocking-io Use blocking IO for the remote shell --bwlimit=KBPS Limit I/O bandwidth, KBytes per second --config=FILE Specify alternate rsyncd.conf file (daemon) --daemon Run as a rsync daemon --no-detach Do not detach from the parent (daemon) --password-file=FILE Get daemon-access password from FILE --port=PORT Specify alternate rsyncd port number -f, --read-batch=FILE Read batch file -F, --write-batch=FILE Write batch file --version Print version number -v, --verbose Increase verbosity -q, --quiet Decrease verbosity -4, --ipv4 Prefer IPv4 -6, --ipv6 Prefer IPv6 -h, --help Show this help screen
Để có danh sách đầy đủ các tùy chọn, hãy tham khảo rsync hướng dẫn sử dụng bằng cách chạy:
man rsync
Ví dụ
Tôi sẽ không nhắc lại ý nghĩa của từng tùy chọn bên dưới - hãy đảm bảo bạn tham khảo lại danh sách ở trên nếu bạn không chắc tùy chọn có nghĩa là gì - bạn không muốn chạy sai lệnh và mất bất kỳ dữ liệu nào!
Local to Local (Single File)
Dưới đây là cách đồng bộ hóa một tệp từ thư mục này sang thư mục khác trên máy cục bộ bằng rsync :
rsync -zvh /path/to/my-file.tar /path/to/destination/
Từ đây, tất cả các ví dụ sẽ tập trung vào việc đồng bộ hóa các thư mục, vì đó là trường hợp sử dụng phổ biến nhất cho rsync
Local to Local (Thư mục)
Đồng bộ hóa tất cả các tệp từ thư mục này sang thư mục khác trên cùng một máy:
rsync -avzh /path/to/source /path/to/destination
Điều -avzh là gì? Đó là một loạt các tùy chọn, được hợp nhất. Đó chỉ là một cách nhanh hơn để nhập -a -v -z -h
Local to Remote (Directory)
Đồng bộ hóa tất cả các tệp từ thư mục nguồn cục bộ đến đích trên máy tính từ xa qua mạng:
rsync -avz /path/to/source/ [email protected]:/path/at/destination/
Lưu ý rằng:
- tên người dùng là người dùng trên hệ thống từ xa
- / path / to / source / là đường dẫn đến thư mục nguồn trên máy tính cục bộ
- 192.168.1.11 là địa chỉ IP của hệ thống từ xa - bạn có thể sử dụng địa chỉ IP hoặc tên máy chủ
- / path / at / destination / là đường dẫn trên hệ thống tệp từ xa
- Quá trình đồng bộ hoá sẽ diễn ra bằng cách sử dụng rsync daemon
Từ xa cục bộ đến từ xa bằng SSH (Thư mục)
-e cho phép bạn chỉ định giao thức được rsync, sử dụng cho phép chúng tôi chỉ định chúng tôi muốn chuyển tệp bằng SSH một cách an toàn:
rsync -avzh -e ssh /path/to/source/ [email protected]:/path/at/destination/
Từ xa đến cục bộ (Thư mục)
Đồng bộ hóa tất cả các tệp từ thư mục nguồn trên máy tính từ xa đến đích trên máy tính cục bộ qua mạng:
rsync -avzh [email protected]:/path/to/source /path/to/destination
Lưu ý rằng:
- tên người dùng là người dùng trên hệ thống từ xa
- 192.168.1.11 là địa chỉ IP của hệ thống từ xa - bạn có thể sử dụng địa chỉ IP hoặc tên máy chủ
- / path / to / source là đường dẫn trên hệ thống tệp từ xa
- / path / to / destination là đích trên máy tính cục bộ
- Quá trình đồng bộ hoá sẽ diễn ra bằng cách sử dụng rsync daemon
Từ xa đến cục bộ bằng SSH (Thư mục)
rsync -avzh -e ssh [email protected]:/path/to/source /path/to/destination
Bạn cũng có thể đồng bộ hóa các tệp đơn lẻ từ cục bộ sang từ xa, từ xa đến cục bộ và sử dụng SSH, giống như chúng tôi đã hiển thị với các thư mục
Những điều khác cần xem xét khi đồng bộ hóa
Xem xét băng thông
Nếu bạn đang đồng bộ hóa qua Internet, bạn có thể muốn giới hạn băng thông được sử dụng để không làm chậm các dịch vụ khác trên mạng của mình:
rsync -avz --bwlimit 512 /path/to/source/ [email protected]:/path/at/destination/
Xem xét Xóa
Nếu một tệp hoặc thư mục đã bị xóa tại nguồn nhưng vẫn tồn tại ở đích, bạn có thể muốn xóa tệp hoặc thư mục tại đích để nó là bản sao chính xác của nguồn. Luôn đảm bảo rằng bạn chắc chắn rằng bạn muốn mọi thứ bị xóa trước khi sử dụng tùy chọn này:
rsync -avz --delete /path/to/source/ [email protected]:/path/at/destination/
Bao gồm hoặc Loại trừ Tệp
Bao gồm và loại trừ các tệp bằng cách đối sánh các mẫu tệp - nếu có những tệp bạn không muốn đồng bộ hóa, chúng có thể bị loại bỏ:
rsync -avz -e ssh --exclude '*' --include 'keep*' /path/to/source/ [email protected]:/path/at/destination/
Lệnh rsync này sẽ chỉ đồng bộ hóa các tệp và thư mục, bắt đầu bằng ‘keep-’ và loại trừ tất cả các tệp và thư mục khác (*).
Cân nhắc Chạy khô
A chạy khô sẽ in ra các tệp sẽ được thay đổi, nhưng nó sẽ không thực sự làm được mọi thứ - sẽ không có tệp nào được đồng bộ hóa hoặc thay đổi, vì vậy bạn có thể thử nghiệm với các tùy chọn khác nhau và xem các hiệu ứng:
rsync -avz --dry-run /path/to/source/ [email protected]:/path/at/destination/
Kết luận
Khi di chuyển một số lượng lớn tệp trên hệ thống của bạn, hãy đảm bảo bạn kiểm tra thông tin đầu vào của mình trước khi nhấn phím enter - bạn không muốn đồng bộ hóa sai hướng và xóa các tệp quan trọng!
Hãy xem các bài viết khác của chúng tôi về các lệnh Linux Shell!