Chỉ sao chép các tệp mới - điều này có thể không? Về cơ bản muốn hợp nhất hai thư mục


14

Tôi có một thư mục trên Drive 1 có tên là Music và nó là 100GB. Tôi có một thư mục trên Drive 2 có tên là Music và nó có dung lượng là 116GB. Đây là phiên bản cập nhật nhất. Làm cách nào để sao chép thư mục Music từ Drive 2 sang Drive 1 mà không phải ghi lại từng tập tin?


Bạn đang sử dụng phiên bản OS X nào?
Nix

1
Tôi đang sử dụng 10.7.4. Khi tôi sao chép thư mục từ ổ đĩa này sang ổ đĩa khác, tôi hỏi tôi có muốn thay thế không. Không có tùy chọn hợp nhất.
dallen

Câu trả lời:


5

Tùy chọn hợp nhất sẽ chỉ hiển thị nếu bạn đang sao chép (thay vì di chuyển) thư mục. Hãy chắc chắn rằng bạn giữ optiontrong khi bạn kéo thư mục mới đến vị trí của thư mục cũ. Ngoài ra, sử dụng + cđể sao chép thư mục mới và + vđể dán lên thư mục cũ sẽ cung cấp cho bạn tùy chọn để hợp nhất các tệp.


Điều này dường như vẫn còn ghi trên các tập tin không cần phải viết lại. Sử dụng rsyncthay thế
BRogers

Ngay cả khi tùy chọn hợp nhất có sẵn, đôi khi nó không hoạt động (chỉ báo cáo lỗi và không làm gì) - đặc biệt trong trường hợp các thư mục lớn như trong trường hợp của bạn. Đó là một lý do khác tại sao bạn nên sử dụng rsync.
Andrzej Martyna

24

Đây là trường hợp sử dụng cổ điển cho rsync:

rsync -av /source-path/source-dir /destination-path

rsync sẽ chỉ sao chép các tệp mới và thay đổi vào vị trí mới.

Điều quan trọng là phải hiểu làm thế nào một dấu gạch chéo trên các hàm đối số nguồn. Nếu có dấu gạch chéo thì nội dung của / source-path / source-dir sẽ được sao chép vào đường dẫn đích . Nếu không có dấu gạch chéo thì bản thân nguồn-dir sẽ được sao chép đến đích và nội dung của nó sẽ bị giảm cấp độ khác trong hệ thống phân cấp đích.

Vì vậy, nếu bạn muốn sao chép một đường dẫn này sang một đường dẫn khác, hãy bao gồm dấu gạch chéo như sau:

rsync -av /sourcepath/sourcedir/ /duplicatpath/sourcedir/

1
Cú bắt tuyệt vời! Và nếu bạn đang làm điều này từ nhiều ổ đĩa (hoặc bất cứ nơi nào trên máy tính của bạn) và không muốn gõ các thư mục, bạn chỉ cần kéo một ổ đĩa (usb ngoài hoặc viên nang thời gian) hoặc chỉ một thư mục cụ thể và thêm nó vào nó để ra lệnh cho bạn Chỉ cần kéo vị trí mục tiêu vào thiết bị đầu cuối
BRogers

Man, cảm ơn bạn rất nhiều vì đã gợi ý dấu gạch chéo. Tôi đã dành thời gian để suy nghĩ tại sao rsync -av ./foo/bar / vol1 / foo / bar lại sao chép tất cả các tệp hiện có. Chém đẫm máu lol !!!
sming

4

CẬP NHẬT

Đầu tiên cài đặt coreutils đầu tiên. Chạy đi brew install coreutils. Nếu bạn chưa brewcài đặt ... hãy quay lại cửa sổ!

Kiểm tra xem cp --versionphiên bản đầu ra cp (GNU coreutils) 8. ^^

Sau đó, bạn sẽ có cpphiên bản chính xác và -ucờ sẽ hoạt động.


Kiểm tra cplệnh. Sử dụng man cpvà đọc các tùy chọn. Bạn có thể làm một cái gì đó như:

cp -r -u ~/source ~/destination

-R, -r , --recursive: sao chép thư mục đệ quy
-u , --update: chỉ sao chép khi tệp SOURCE mới hơn tệp đích hoặc khi tệp đích bị thiếu
-p giống như --preserve = mode, quyền sở hữu , dấu thời gian
-v --verbose: giải thích những gì đang được thực hiện

Vì vậy, nếu bạn muốn sao chép các tệp từ thư mục Tải xuống / nhạc để nói thư mục Âm nhạc / mới của bạn, bạn sẽ làm một cái gì đó như: Điều này sẽ hợp nhất nội dung của hai thư mục này và nếu tồn tại hai tệp có cùng tên và đường dẫn thì nó sẽ giữ mới nhất dựa trên dấu thời gian.
cp -ruvp ~/Downloads/music/* ~/Music/new/


Bạn có chắc tùy chọn -u hoạt động với lệnh cp trong OSX không? Tôi nhận được thông báo "cp: tùy chọn bất hợp pháp - u" ở Sierra. Dường như không phải tất cả các lệnh đều giống như trong Linux.
OMA

Hãy thử lệnh cp --help và xem nếu tùy chọn có sẵn. Hoặc kiểm tra cp --version và đảm bảo rằng nó được cập nhật. Tôi đang sử dụng: cp (GNU coreutils) 8.27
drew7721

Đáng buồn thay, -u không phải là cờ hợp lệ cho cp trên OS X. Sẽ rất thuận tiện khi có!
Per Quested Aronsson

Thật không may câu trả lời này là không chính xác.
William Cerniuk

sử dụng brew install coreutilsđể có được cpphiên bản chính xác .
vẽ7721

0

Không chắc chắn tại sao nút Lion Merge mặc định không hiển thị cho tôi. Nhưng tôi đã kết thúc bằng cách sử dụng ditto. Tìm thấy ở đây: https://superuser.com/a/221599/102789


1
HÃY CẨN THẬN! ditto không giữ các tệp mới hơn, nó luôn ghi đè đích với nguồn. Nếu tệp nguồn cũ hơn, nó sẽ loại bỏ tệp mới và thay thế bằng tệp cũ hơn
FrancescoMM

đúng vậy - cảnh báo rất quan trọng từ FrancescoMM, hãy sử dụng rsync
Andrzej Martyna
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.