Làm cách nào tôi có thể sao chép một thư mục (lớn) trên một thư mục khác chỉ thay đổi các tệp khác nhau?


14

Tôi có thư mục a và thư mục b. Họ to lớn. b gần giống với a. "Hầu như" có nghĩa là 4-5 tệp khác nhau và tôi không biết chúng là gì. Tôi muốn sao chép b qua a, nhưng chỉ các tệp khác nhau. Tôi đang ở trong bash.

(không, tôi không thể xóa a và thay thế bằng b, vì 1) a được kiểm soát phiên bản 2) một bản sao đầy đủ (hoặc mv) sẽ mất quá nhiều. Tôi muốn chỉ sao chép các tập tin khác nhau).


rsyncmột lựa chọn?
Bobby

Đó là, nhưng tôi không biết nhiều về rsync.
janesconference

Câu trả lời:


17

Bạn có thể sử dụng rsyncđể làm điều này, lệnh tôi sử dụng làrsync -tr "folder to copy from" "folder to copy to"

ví dụ rsync -tr /home/me/stuff/* /home/me/otherstuff/


1
HÃY THƯỞNG lệnh này. Nó sẽ xóa tất cả các tập tin sẽ không khác nhau. Tôi đã chạy nó và MẤT hầu hết mọi thứ !!
Arvind K.

@Arvind Tôi không biết bạn đã sử dụng lệnh nào khiến bạn mất dữ liệu nhưng đó không phải là rsync -tr. Đọc trang người đàn ông.
Tog

18

Cũng có thể làm điều này với cũ tốt cp:

Cảm ơn srcspider đã nhắc nhở tôi sử dụng -T!

cp -ruT old-dir new-dir


+1 Tôi đã quá quen với việc đồng bộ hóa trên các máy Tôi quên những cách thanh lịch.
Tog

không hoạt động đối với tôi :(
janesconference

Điều đó thực sự tốt gnu cp. ;-)
Keith

1
Trên OS X, tùy chọn -u không tồn tại. Tôi chỉ đơn giản sử dụng cp -r old-dir new-dir, vì tôi không phải so sánh ngày.
Jean-François Beauchamp

Không hoạt động. Tôi không chắc đây có phải là một số quy ước tên hay không, nhưng thư mục cp -ru-A thư mục-B sẽ chỉ sao chép thư mục-A bên trong thư mục-B không sao chép nội dung của A bên trong B và ghi đè, đó sẽ là hiệu ứng mong muốn.
srcspider 21/03/13

1

Một lựa chọn tốt khác là Unison ( http://www.cis.upenn.edu/~bcpierce/unison/ ), đặc biệt nếu không thực sự là "nguồn" và "đích". Mỗi thư mục là một root và Unison đồng bộ hóa chúng và giữ siêu dữ liệu cho các đồng bộ hóa trong tương lai. Nó cung cấp cả tùy chọn dòng lệnh và GUI cũng có thể dễ dàng được lên lịch qua cron.

Tôi sử dụng nó để tạo bản sao lưu Dropbox của mình vào thiết bị NAS cục bộ không thể chạy ứng dụng khách Dropbox.


1

Nó có thể được thực hiện với cp ol 'tốt, mặc dù với định dạng hơi khác so với đã nêu ở trên. Đây là cách tôi đã làm:

cp -ru --target-directory="destination_path" source_path/*

1

Bạn có thể tìm 2 thư mục.

khác -r dir1 dir2

nó sẽ hiển thị cho bạn danh sách các tập tin differnet

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.