2011-12-06 40 views
28

Tôi muốn lấy một thư mục lớn (~ 100GB) và sao chép nó sang một thư mục khác. Tôi muốn nó bỏ qua bất kỳ tệp nào tồn tại (không phải thư mục) vì vậy nếu /music/index.html không tồn tại, nó sẽ vẫn sao chép ngay cả khi thư mục /music đã tồn tại.Sao chép các tập tin trong khi bỏ qua các tập tin tồn tại - Unix

Tôi tìm thấy this, nhưng vỏ của tôi đang nói -u không phải là đối số hợp lệ.

Tôi không biết cách hoạt động của rsync, vì vậy, vui lòng cho tôi biết nếu đó là giải pháp tốt hơn.

Cảm ơn.

+3

'rsync' là * luôn * giải pháp tốt hơn. Vâng, đó là * điều đó * tốt. –

+3

Câu hỏi này có lẽ nên được chuyển đến http://unix.stackexchange.com/ – Bruno

+0

... hoặc [su] –

Trả lời

50

Luôn sử dụng rsync để sao chép tệp, vì nó là tuyệt vời.

Để bỏ qua các file hiện có:

rsync --ignore-existing --recursive /src /dst 

Đỗ đọc manual và tìm kiếm xung quanh cho nhiều người, nhiều ví dụ tuyệt vời. Đặc biệt là sự kết hợp với ssh làm cho rsync là một công cụ tuyệt vời cho các kết nối chậm và không đáng tin cậy trên tài khoản của tùy chọn --partial của nó. Thêm --verbose để xem tệp nào đang được sao chép. Hãy chắc chắn kiểm tra rất nhiều tùy chọn liên quan đến việc bảo tồn quyền, người dùng và dấu thời gian.

+0

Có phải đệ quy hay tôi cần phải thêm '-r'? – switz

+1

Hoàn hảo, đã sẵn sàng và đang chạy. Tôi có thể nói nó hoạt động bằng cách chạy trong chế độ tiết ('-v'). Cảm ơn! – switz

+6

Để hiển thị tiến trình trong khi rsync hoạt động, hãy sử dụng: 'rsync --human-readable --progress --ignore-existing --recursive/src/dst' –

7

rsync(1) hoàn toàn tỏa sáng khi nguồn và đích đến trên hai máy tính khác nhau. Nó vẫn là công cụ tốt hơn để sử dụng khi nguồn và đích nằm trên cùng một máy tính.

Một đơn giản sử dụng sẽ như thế nào:

rsync -av /path/to/source /path/to/destination 

Nếu bạn tự tin rằng bất kỳ tập tin mà tồn tại trong cả hai địa điểm là giống hệt nhau, sau đó sử dụng --ignore-existing tùy chọn:

rsync -av --ignore-existing /path/to/source /path/to/destination 

Just để hoàn thành, khi tôi sử dụng rsync(1) để tạo bản sao lưu trên hệ thống từ xa, lệnh tôi thích nhất là:

rsync -avz -P /path/to/source hostname:/path/to/destination 

Các -z yêu cầu nén (Tôi sẽ không bận tâm tại địa phương, nhưng qua một liên kết mạng chậm hơn nó có thể tạo sự khác biệt lớn) và -P yêu cầu --partial--progress - mà sẽ tái sử dụng phần chuyển file nếu nó phải được khởi động lại, và sẽ hiển thị một chỉ báo thanh tiến trình tiện dụng.

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