2013-01-13 25 views
5

Có vẻ như lệnh rất cơ bản. Tuy nhiên, ngay cả sau một giờ tìm kiếm giải pháp, tôi vẫn không thể tìm thấy thứ gì đó hiệu quả.MAC: Cách hợp nhất thư mục để chúng tôi chỉ ghi đè lên khi tệp nguồn mới hơn tệp đích?

Vì vậy, tôi có hai thư mục lớn (với nhiều tệp và nhiều thư mục con, bản sao lưu lớn). Tôi muốn kết hợp hai thư mục này vào một thư mục chỉ chứa các tệp mới hơn. Vì vậy, tôi đang tìm kiếm một cách để ghi đè lên tập tin NẾU CHỈ tập tin nguồn mới hơn tập tin đích, hoặc khi tập tin đích không tồn tại.

Tôi đang chạy phiên bản Mac 10.7.4. Tôi đang mở để cài đặt ứng dụng mới và/hoặc sử dụng lệnh terminal/bash.

+0

OS X 10.8 Mountain Lion tự động thông qua GUI . –

Trả lời

13

Trong hệ thống Gnu, hãy sử dụng mv -u SOURCE DEST hoặc cp -u SOURCE DEST để di chuyển hoặc sao chép chỉ khi tệp SOURCE mới hơn tệp DEST hoặc khi tệp đích bị thiếu.

Lưu ý rằng trong OS X, mvcp không hỗ trợ tùy chọn -u. Tuy nhiên, rsync có một lựa chọn -u và nó được hỗ trợ trên OS X. Ví dụ:

rsync -aru SOURCE/ DEST 

Chạy một số xét nghiệm trong các danh mục đầu trước khi áp dụng nó vào thư mục lớn và quan trọng, bởi vì (IMO) rsync là mang phong cách riêng về việc liệu thư mục tên kết thúc có hoặc không có /. Một phần của trang người dùng Linux cho biết:

Dấu gạch chéo ở cuối thay đổi hành vi này để tránh tạo cấp thư mục bổ sung tại đích. Bạn có thể nghĩ về một dấu/trên một nguồn có nghĩa là "sao chép nội dung của thư mục này" như trái ngược với "sao chép thư mục theo tên", ...

+0

Nếu tôi đọc tài liệu chính xác, -r là một phần hoàn toàn của tùy chọn -a (lưu trữ). Vì vậy, -au là giống như -aru. Bạn hoàn toàn có thể lưu một chữ cái! =) –

+0

@ ChrisDragon, có vẻ như bạn đang đúng ... Tôi nên nhận thấy rằng * r * là dư thừa trong * -aru * –

Các vấn đề liên quan