Chỉ sao chép một tệp khi nó mới hơn đích


36

Làm cách nào để sao chép một tệp trong Linux chỉ khi tệp được sao chép mới hơn phiên bản tại đích?

Nếu tệp tại đích mới hơn, tôi muốn bản sao tệp không đi trước.

Câu trả lời:



17

Sử dụng rsync

rsync --progress -r -u /from/one/* /to/another/directory

3
Chỉ để hoàn thiện: -rcó nghĩa là thao tác đệ quy vào các thư mục con và -uđể giữ các tệp mới hơn ở đích (= update). --progresshiển thị thông tin tiến độ trong quá trình hoạt động.
Jörg Gottschlich

6

Bạn không nói bạn đang sử dụng cái vỏ nào, vì vậy tôi sẽ giả sử ksh:

if [[ file1 -nt file2 ]]; then cp file1 file2; fi

Không phải là bash phổ biến nhất?
Cướp

1
@Rob, vâng. Điều này hoạt động trong bash quá, rõ ràng. Tôi chỉ không có bash (hoặc bất kỳ hộp Linux tiêu chuẩn nào) khi tôi viết nó.
Kusalananda

4

yes|cp -ruv /from/* /to/.
có - Trả lời có cho tất cả các câu hỏi.
r -
u đệ quy - cập nhật
v - Tiến trình

hoạt động như xargs .

Tôi không biết làm thế nào để giải thích về mặt học thuật.

Làm thế nào để buộc cp ghi đè mà không cần xác nhận


1
Đây là loại khó hiểu. Bạn có thể mở rộng câu trả lời của mình để rõ ràng hơn một chút, có thể bao gồm một ví dụ không? Cảm ơn. từ Đánh giá
fixer1234

có -> Trả lời có cho tất cả các câu hỏi.
Felippe Silvestre
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.