![10 ví dụ hữu ích về lệnh rsync của Linux 10 ví dụ hữu ích về lệnh rsync của Linux](https://www.howtogeek.com/wp-content/uploads/2022/03/shutterstock_321627716.png?width=1198&trim=1,1&bg-color=000&pad=1,1)
Linux rsync
command là một công cụ đồng bộ hóa thư mục và sao chép tập tin mạnh mẽ. Dưới đây là mười trường hợp sử dụng phổ biến mà bạn có thể sử dụng tốt trên hệ thống của riêng mình.
Công cụ rsync
Các rsync
công cụ sao chép tập tin và thư mục giữa hai máy tính. Nó sử dụng một thuật toán phức tạp quét cây thư mục để tìm các tệp trên máy tính nguồn không tồn tại trên máy tính đích. Các tệp này được truyền đến máy tính đích. Những gì làm cho rync
thông minh đến mức nó có thể tìm ra những mảnh nào của hiện có các tệp đã được sửa đổi và nó chỉ gửi thay đổi phần.
Bạn có thể dùng rsync
để sao chép tệp sang một vị trí khác trên ổ cứng của bạn, sang một ổ cứng khác trong cùng một máy tính, sang ổ USB được kết nối bên ngoài hoặc bất kỳ vị trí nào khác có thể truy cập mạng.
Trên hết, rsync
có thể tùy chọn giữ nguyên các liên kết tượng trưng, liên kết cứng và siêu dữ liệu tệp như quyền sở hữu tệp, quyền và thời gian truy cập. Để hỗ trợ tất cả chức năng này, rsync
có nhiều tùy chọn và việc tìm ra tất cả chúng cần có thời gian. Chúng tôi đã thu thập 10 ví dụ này để giúp bạn bắt đầu. Chúng tôi đã viết về việc thực hiện sao lưu với rsync
vì vậy chúng tôi đang tập trung vào các mục đích sử dụng khác ở đây.
Đối với tất cả các tùy chọn của nó, cấu trúc của một rsync
lệnh là đơn giản. Chúng tôi cần cung cấp nguồn, đích và các tùy chọn mà chúng tôi muốn sử dụng. bạn có thể sẽ tìm thấy rằng rsync
đã được cài đặt trên máy tính Linux của bạn—nó đã được cài đặt trên tất cả các máy thử nghiệm của chúng tôi—nhưng nếu không, nó chắc chắn sẽ nằm trong kho của bản phân phối của bạn.
1. Sao chép tệp vào một thư mục khác
Đây là một ví dụ đơn giản để giúp chúng ta bắt đầu. Chúng tôi sẽ sao chép các tệp từ thư mục “tệp dự án” sang thư mục “Tài liệu”. Chúng tôi đang sử dụng hai tùy chọn, tùy chọn -a
(lưu trữ) tùy chọn và -v
(dài dòng) tùy chọn. Tùy chọn dài dòng cho biết rsync
để giải thích những gì nó làm như nó làm nó. Các archive
tùy chọn duy trì quyền sở hữu tệp và một số mục khác mà chúng tôi sẽ xem xét ngay sau đây.
Định dạng của lệnh là options source-location destination-location
.
rsync -av /home/dave/project-files/ /home/dave/Documents/
sử dụng ls
trên thư mục “Documents” hiển thị các tập tin đã được sao chép.
Trong khi rsync
đang hoạt động, các tệp được liệt kê khi chúng được sao chép. Chúng tôi được bảo:
- Số lượng byte được gửi.
- Số lượng byte nhận được. Trước khi quá trình chuyển tập tin diễn ra,
rsync
phải tìm ra tập tin nào cần được chuyển. Để làm điều đó, một số thông tin về các tệp trên đích phải được truy xuất bởirsync
. Thông tin này được chứa trong các byte nhận được. - Tốc độ chuyển giao.
- Tổng kích thước của các tệp được sao chép.
- “Tăng tốc”. Đây là tỷ lệ của tổng kích thước chia cho tổng số byte đã gửi và nhận. Con số này càng cao, việc chuyển giao càng hiệu quả.
Chúng tôi đã sửa đổi tệp văn bản trong thư mục nguồn và lặp lại rsync
yêu cầu.
rsync -av /home/dave/project-files/ /home/dave/Documents/
Lần này, tệp duy nhất cần được cập nhật là tệp văn bản mà chúng tôi đã sửa đổi. Con số tăng tốc bây giờ là 30.850. Đây là cách sao chép phần đã sửa đổi của tệp đơn lẻ đó hiệu quả hơn nhiều so với sao chép tất cả các tệp.
Các -a
(archive) tùy chọn thực sự đại diện cho một tập hợp các tùy chọn khác. Nó giống như việc sử dụng tất cả các tùy chọn này:
- r: Làm việc đệ quy thông qua các cây thư mục trong thư mục nguồn và sao chép chúng vào thư mục đích, tạo chúng nếu chúng chưa tồn tại ở đó.
- tôi: Sao chép liên kết tượng trưng dưới dạng liên kết tượng trưng.
- P: Giữ nguyên quyền đối với tệp.
- t: Giữ nguyên thời gian sửa đổi tập tin.
- g: Giữ nguyên quyền của nhóm.
- o: Giữ nguyên quyền sở hữu tệp.
- Đ.: Sao chép các tập tin đặc biệt và tập tin thiết bị. Các tệp đặc biệt có thể là các mục tập trung vào giao tiếp được xử lý giống như các tệp, chẳng hạn như ổ cắm và đường ống nhập trước xuất trước (fifos). Tệp thiết bị là tệp đặc biệt cung cấp quyền truy cập vào thiết bị và thiết bị giả.
Đây là một sự kết hợp được sử dụng thường xuyên đến nỗi rsync
cung cấp các -a
(archive) như một cách tốc ký để gọi tất cả chúng.
2. Sao chép thư mục sang thư mục khác
Nếu bạn nhìn vào phần trước rsync
lệnh, bạn sẽ thấy dấu gạch chéo về phía trước “/” trên đường dẫn tệp của thư mục nguồn. Điều này rất quan trọng. Nó nói rsync
để sao chép nội dung của thư mục. Nếu bạn không cung cấp dấu gạch chéo về phía trước, rsync
sẽ sao chép thư mục Và Nội dung của nó.
rsync -av /home/dave/project-files /home/dave/Documents/
Lần này tên thư mục được thêm vào tên tệp khi chúng được liệt kê. Nếu chúng ta nhìn vào bên trong thư mục đích, chúng ta sẽ thấy thư mục nguồn đã được sao chép cùng với các tệp bên trong nó.
ls Documents/
ls Documents/project-files/
3. Sao chép một thư mục sang một ổ đĩa khác
Việc sao chép tệp sang một vị trí khác trên cùng một ổ đĩa cứng không giúp bạn bảo vệ khỏi lỗi ổ đĩa. Nếu ổ đĩa đó từ bỏ bản ghost, bạn đã mất bản sao nguồn và đích của các tệp đó. Sao chép chúng sang một ổ cứng khác là một cách mạnh mẽ hơn nhiều để bảo vệ dữ liệu của bạn. Tất cả những gì chúng ta cần làm là cung cấp đường dẫn chính xác đến ổ đĩa đích.
rsync -av /home/dave/project-files /run/mount/drive2
Nhìn vào ổ cứng khác cho chúng tôi thấy thư mục và các tệp đã được sao chép vào đó.
ls run/mount/drive2/project-files/
4. Chạy khô trước
Trước khi chúng ta xem xét cách rsync
có thể xóa các tệp một cách hữu ích cho chúng tôi, hãy xem cách chúng tôi có thể tạo rsync
chạy khô.
Trong một cuộc chạy khô, rsync
trải qua các chuyển động để thực hiện các hành động mà chúng tôi đã yêu cầu, nhưng không thực sự thực hiện chúng. Nó báo cáo về những gì sẽ xảy ra nếu lệnh đã được thực thi. Bằng cách này, chúng tôi có thể đảm bảo rằng lệnh thực hiện chính xác những gì chúng tôi mong đợi.
Để buộc chạy khô, chúng tôi sử dụng --dry-run
lựa chọn.
rsync -av --dry-run /home/dave/geocoder /run/mount/drive2
Các tệp sẽ được sao chép được liệt kê cho chúng tôi và chúng tôi nhận được số liệu thống kê thông thường, theo sau là thông báo (DRY RUN)
để chúng ta biết không có gì thực sự xảy ra.
5. Xóa tệp trong thư mục đích
Các --delete
tùy chọn cho biết rsync
để xóa các tập tin và thư mục trong điểm đến thư mục không có trong thư mục nguồn. Điều này có nghĩa là thư mục đích sẽ là một bản sao chính xác của thư mục nguồn. Chúng tôi sẽ thận trọng và sử dụng --dry-run
tùy chọn đầu tiên.
rsync -av --delete --dry-run /home/dave/geocoder /run/mount/drive2
Chúng tôi được thông báo rằng hai tệp sẽ bị xóa. Nếu chúng tôi chắc chắn rằng chúng tôi không quan tâm đến việc chúng sẽ bị xóa, chúng tôi có thể xóa --dry-run
tùy chọn và thực hiện lệnh thực sự.
rsync -av --delete /home/dave/geocoder /run/mount/drive2
Lần này, nội dung của các thư mục được đồng bộ hóa và hai tệp bổ sung sẽ bị xóa.
6. Xóa các tập tin nguồn
Bạn có thể chọn xóa các tệp nguồn sau một chuyển khoản thành cônglàm rsync
hoạt động giống như một nước đi hơn là một bản sao. Nếu quá trình chuyển không thành công, các tệp nguồn sẽ không bị xóa. Tùy chọn chúng ta cần sử dụng là --remove-source-files
.
rsync -av --remove-source-files /home/dave/geocoder /run/mount/drive2
Lưu ý rằng các tệp có thể bị xóa ngay cả khi không có tệp nào được chuyển. Đó là bởi vì nếu rsync
kiểm tra và tất cả các tệp đã có trong thư mục đích và không có gì cho rsync
làm, rsync
coi như chuyển khoản thành công.
Cũng, rsync
chỉ xóa các các tập tin từ thư mục nguồn. Nó không xóa thư mục nguồn cũng như bất kỳ thư mục con nào, chỉ xóa các tệp trong đó. Chúng ta có thể thấy điều này bằng cách sử dụng -R
tùy chọn (đệ quy) với ls
trên thư mục nguồn.
ls -R geocoder
7. Sao chép tệp vào máy tính từ xa
Để đồng bộ hóa các thư mục với một máy tính từ xa, rsync
phải được cài đặt trên cả hai máy tính. Thiết lập giao tiếp SSH giữa hai máy tính trước khi bạn thử sử dụng rsync
đến máy tính từ xa.
Bạn cần có thể đăng nhập từ xa với tư cách là người dùng thông thường trên máy tính từ xa để rsync
làm việc. Việc bạn sử dụng ID và mật khẩu để đăng nhập hay bạn đã thiết lập các khóa SSH để truy cập an toàn mà không cần mật khẩu không quan trọng, nhưng nếu bạn không thể đăng nhập với tư cách người dùng thì rsync
cũng sẽ không hoạt động.
Nếu bạn đăng nhập bằng mật khẩu, rsync
sẽ nhắc bạn nhập mật khẩu. Nếu bạn sử dụng các khóa SSH để đăng nhập, quá trình này sẽ diễn ra liền mạch.
Điều bổ sung duy nhất bạn cần làm là thêm tên tài khoản người dùng và địa chỉ IP của máy tính từ xa vào đầu đường dẫn tệp đích. Sử dụng dấu hiệu tại “@
” để tách tên người dùng khỏi tên máy tính hoặc địa chỉ IP và dấu hai chấm “:
” để tách tên máy tính hoặc địa chỉ IP khỏi đường dẫn thư mục.
Trên mạng thử nghiệm của chúng tôi, hai lệnh này là tương đương nhau.
rsync -av /home/dave/geocoder dave@nostromo.local:/home/dave/Downloads
rsync -av /home/dave/geocoder dave@192.168.86.60:/home/dave/Downloads
Chúng tôi nhận được cùng một thông tin được báo cáo cho chúng tôi khi chúng tôi sao chép tệp cục bộ.
8. Bao gồm hoặc loại trừ tệp hoặc thư mục
Bạn có thể có các tệp và thư mục trong thư mục nguồn mà bạn không muốn sao chép sang máy tính đích. Bạn có thể loại trừ chúng bằng cách sử dụng --exclude
lựa chọn. Theo cách tương tự, bạn có thể chọn bao gồm các tệp và thư mục cụ thể với --include
lựa chọn.
Điều khó hiểu là nếu bạn sử dụng --include
riêng, tất cả các tệp đều được sao chép, như bình thường—kể cả các tệp được bao gồm cụ thể của bạn. Để chỉ sao chép các tệp được bao gồm, bạn phải --exclude
mọi thứ khác.
Bạn có thể sử dụng bao nhiêu --include
Và --exclude
các tùy chọn trong lệnh của bạn tùy thích, nhưng hãy chắc chắn rằng bạn đặt --include
tùy chọn trước của bạn --exclude
tùy chọn. Ngoài ra, hãy đảm bảo rằng bạn có dấu gạch chéo về phía trước trên đường dẫn tệp nguồn của mình.
Lệnh này chỉ sao chép tệp mã nguồn C và tệp dữ liệu CSV sang máy tính đích.
rsync -av --include="*.c" --include="*.csv" --exclude="*" /home/dave/geocoder/ /run/mount/drive2/geocoder
Các tệp duy nhất được sao chép là những tệp chúng tôi đưa vào cụ thể.
9. Nén tệp trong quá trình truyền
Các -z
(nén) tùy chọn nguyên nhân rsync
để nén các tập tin được chuyển. Tuy nhiên, chúng không được lưu trữ dưới dạng tệp nén trên máy tính đích, chúng chỉ được nén trong quá trình truyền. Điều này có thể tăng tốc độ chuyển dài.
rsync -avz /home/dave/geocoder /run/mount/drive2
10. Giám sát tiến độ
Nói về việc chuyển tiền kéo dài, chúng ta có thể thêm một số thống kê để chúng ta có thể thấy tiến trình chuyển tiền.
Các -P
tùy chọn (một phần, tiến trình) thực sự thêm hai tùy chọn, --partial
Và --progress
. Các --partial
tùy chọn cho biết rsync
để giữ các tệp được truyền một phần nếu quá trình truyền không thành công. Điều này giúp tiết kiệm thời gian khi quá trình truyền được bắt đầu lại.
Các --progress
tùy chọn in, đối với mỗi tệp, dữ liệu được truyền theo byte và theo tỷ lệ phần trăm, tốc độ truyền, thời gian thực hiện, số lượng tệp được truyền và số lượng tệp còn lại.
rsync -aP /home/dave/geocoder /run/mount/drive2
Đầu ra cuộn qua khá nhanh và rất khó đọc. Bạn có thể cải thiện mọi thứ một chút bằng cách loại bỏ -v
(dài dòng) tùy chọn từ lệnh. Thậm chí sau đó nó vẫn còn khó đọc khi nó lướt qua.
Việc theo dõi tiến trình chuyển giao tổng thể thường hữu ích hơn. Bạn có thể thực hiện việc này với tùy chọn –info và chuyển nó “progress2” làm tham số.
sync -a --info=progress2 /home/dave/geocoder /run/mount/drive2
Điều này đưa ra một báo cáo tiến độ thực sự hữu ích.
Giống như cp trên Steroid
Các rsync
lệnh nhanh, linh hoạt và đáng để bạn dành thời gian làm quen với nó. Hình thức cơ bản của một rsync
lệnh với -av
tùy chọn, thư mục nguồn và thư mục đích hoàn toàn không khó nhớ.
Đối với nhiều trường hợp sử dụng, đó là tất cả những gì bạn cần. Hãy thoải mái với điều đó và phần còn lại sẽ đến một cách dễ dàng.