Đồng bộ hóa hai thư mục cục bộ trong bash


23

Tôi có một thư mục lớn "X" trong thư mục nhà của mình và bản sao này đã lỗi thời trên ổ đĩa flash - Y. Tương tự là gì rm Y; cp X Y, nhưng không ghi đè lên các tệp đã có?

Câu trả lời:


26

Có nhiều thuộc tính hơn cho rsync so với đề cập câu trả lời trước đó. Bạn nên tự nhìn vào chúng:

man rsync

Nhưng đối với vấn đề của bạn, tôi đề nghị:

rsync -a --delete X Y

Bằng cách này, người nhận (Y) sẽ xóa bất kỳ tệp nào có trong X. Hãy chắc chắn rằng bạn làm đúng. Được sử dụng không chính xác vì root có thể dễ dàng giết chết hệ thống của bạn ... :)


1
Đồng ý rằng bạn nên rất cẩn thận với điều này. Hãy thử thêm --dry-run vào lệnh để xem điều gì sẽ xảy ra mà không thực sự có bất kỳ thay đổi nào. Nếu nó hoạt động tốt, hãy thực hiện cùng một lệnh mà không cần --dry-run
squarecandy

Một sự điều chỉnh nhỏ khiến tôi mất một lúc để đạt được : rsync -a --delete X/ Y. Cú chém nhỏ đó sau khi X làm cho nó hoạt động như dự định đối với tôi, vì vậy nó cũng có thể giúp ích cho người khác. Giải thích tại đây: abbeyworkshop.com/howto/unix/nix_rsync/index.html
Shovalt

15

Hãy xem rsync (1) . Đó là dự định để làm khá nhiều chính xác những gì bạn muốn.

rsync -av X Y

Nó hỗ trợ sao chép từ xa, thông qua giao thức hoặc ssh riêng, nhưng nó cũng có thể được sử dụng cục bộ.

Tùy thuộc vào hành vi chính xác mà bạn muốn, bạn cũng có thể muốn vượt qua --updatetùy chọn. Điều này sẽ yêu cầu rsync không ghi đè lên các tệp đã tồn tại trên mục tiêu và mới hơn các tệp trong nguồn.

Nếu bạn muốn xóa các tệp bổ sung (nghĩa là các tệp tồn tại trong Y, nhưng không phải trong X), bạn có thể thêm --deletetùy chọn.


Nhưng nó sẽ không xóa các tệp, hơn là xóa trong X, trong khi rm Y; cp X Ysẽ.

Để xóa các tệp đã bị xóa khỏi X, hãy sử dụng tùy chọn --delete.
csonuryilmaz

0

Hãy thử sử dụng rsnyc, có thể bằng lệnh sau:

rsync -avzu /home/x /y

-u = không ghi đè lên một tệp tại đích, nếu nó được sửa đổi


Nhưng nó sẽ không xóa các tệp, hơn là xóa trong X, trong khi rm Y; cp X Ysẽ.

0

Tôi nghĩ rằng một số chức năng mà bạn đang tìm kiếm trong tùy chọn -u (cập nhật) thực sự tồn tại trong tùy chọn này:

"--ignore-tồn tại" - bỏ qua các tệp cập nhật tồn tại trên máy thu

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.