Tôi muốn sao chép một tập hợp các tệp từ thư mục A sang thư mục B, với lời cảnh báo rằng nếu một tệp trong thư mục A giống hệt với một tệp trong thư mục B, thì không nên sao chép tệp đó (và do đó không nên sửa đổi thời gian sửa đổi của nó cập nhật). Có cách nào để làm điều đó với các công cụ hiện có mà không cần viết kịch bản của riêng tôi để làm điều đó không?
Để giải thích một chút về trường hợp sử dụng của tôi: Tôi đang tự động tạo một loạt các .c
tệp trong một thư mục tạm thời (bằng một phương pháp phải tạo ra tất cả chúng một cách vô điều kiện) và khi tôi tạo lại chúng, tôi chỉ muốn sao chép những cái đã thay đổi trong thư mục nguồn thực tế, khiến cho những cái không thay đổi không bị ảnh hưởng (với thời gian tạo cũ của chúng) để make
biết rằng nó không cần phải biên dịch lại chúng. (Tuy nhiên, không phải tất cả các tệp được tạo đều là .c
tệp, vì vậy tôi cần thực hiện so sánh nhị phân thay vì so sánh văn bản.)
(Như một lưu ý: Điều này phát sinh từ câu hỏi tôi đã hỏi trên https://stackoverflow.com/questions/8981552/speeding-up-file-comparions-with-cmp-on-cygwin/8981762#8981762 , nơi tôi đang cố gắng để tăng tốc tập tin tập lệnh mà tôi đang sử dụng để thực hiện thao tác này, nhưng tôi thực sự nên hỏi liệu có cách nào tốt hơn để làm điều này hơn là viết tập lệnh của riêng tôi - đặc biệt là vì bất kỳ cách đơn giản nào để thực hiện việc này trong trình bao tập lệnh sẽ gọi một cái gì đó giống như cmp
trên mỗi cặp tệp và bắt đầu tất cả các quy trình đó mất quá nhiều thời gian.)
rsync -avnc
hoặc theo cách lâu dài rsync --archive --verbose --dry-run --checksum
.
diff -qr dirA dirB
để xem những tập tin nào là duy nhấtdirA
vàdirB
, lặp đi lặp lại.