Sử dụng ditto để sao chép tệp & thư mục một cách thông minh từ Mac Terminal
Mục lục:
Hầu hết người dùng dòng lệnh lâu năm đều dựa vào lệnh cp để sao chép tệp và thư mục, nhưng Mac OS X cung cấp một giải pháp khác với lệnh ‘ditto’. Ditto nâng cao hơn một chút nhưng có thể có lợi cho 'cp' vì một số lý do, vì nó không chỉ duy trì các thuộc tính và quyền sở hữu mà còn cả các nhánh tài nguyên tệp và siêu dữ liệu tệp và thư mục, về cơ bản đảm bảo rằng tệp và/hoặc thư mục được sao chép chính xác.
Ngoài ra, ditto có thể được sử dụng để sao chép tệp hoặc thư mục vào thư mục nguồn, nhưng nếu nguồn đó chưa tồn tại, ditto sẽ tự động tạo nó. Ngoài ra, nếu thư mục đích tồn tại, nội dung được sao chép sẽ được hợp nhất với nhau trong thư mục đích đó. Cuối cùng, ditto cũng đi theo các liên kết tượng trưng, khiến nó đặc biệt tiện dụng nếu bạn là người thường xuyên sử dụng lệnh ln.
Để hiểu rõ hơn về lệnh ditto, hãy xem qua một vài ví dụ với cú pháp thực tế.
Sử dụng Ditto để sao chép tệp/thư mục
Ở dạng đơn giản nhất, ditto hoạt động giống như lệnh cp, với cú pháp cơ bản như sau:
ditto đích nguồn
Ví dụ: nếu bạn muốn sao chép ~/Desktop/FluffyBackups vào /Volumes/FluffyBackups/, bạn chỉ cần gõ như sau:
ditto ~/Desktop/FluffyBackups /Volumes/FluffyBackups/
Một lần nữa, điều này sẽ giữ lại tất cả các chi tiết siêu dữ liệu tài nguyên và quyền sở hữu của các tệp được sao chép, điều này có thể đặc biệt quan trọng nếu bạn đang sao chép các tệp từ thư mục người dùng này sang thư mục người dùng khác hoặc nếu bạn muốn giữ lại thứ gì đó như thời gian sửa đổi của các tập tin.
Nếu bạn không chắc chắn về nội dung nguồn và đích, bạn luôn có thể so sánh hai nội dung này bằng lệnh comm hoặc lệnh diff trước khi tiếp tục với lệnh ditto.
Sử dụng Ditto để Hợp nhất Thư mục & Nội dung Thư mục
Hãy nhớ rằng, ditto sẽ kiểm tra xem đích đã tồn tại chưa và nếu có, nó sẽ hợp nhất các thư mục của nguồn với đích. Điều này rất quan trọng và cực kỳ hữu ích, làm cho nó trở thành một trong những cách dễ nhất để hợp nhất các thư mục từ dòng lệnh trong Mac OS X (mặc dù giờ đây nó cũng dễ dàng trong Finder).
ditto ~/Pictures/Fall2015/ /Volumes/PhotoBackup/2015/
Thao tác này sẽ lấy tất cả ảnh từ “Fall2015” và sao chép chúng vào thư mục có sẵn “2015”, hợp nhất nội dung từ nguồn đến đích một cách hiệu quả. Một lần nữa, hành vi hợp nhất xảy ra khi đích đã tồn tại, nếu đích không tồn tại, nó sẽ được tạo theo chỉ định hoặc dưới dạng tên nguồn.
Nếu bạn đang sử dụng ditto để sao chép dữ liệu từ các thư mục có liên kết tượng trưng, thì việc sử dụng cờ -V (tất cả chi tiết) sẽ có giá trị vì cờ này sẽ hiển thị mọi tệp và liên kết tượng trưng đã được sao chép. Lưu ý -V khác với -v, sẽ chỉ hiển thị các tệp dưới dạng đầu ra và không hiển thị các liên kết tượng trưng.
Sao chép không có siêu dữ liệu bằng Ditto
Nếu vì lý do nào đó bạn không muốn sao chép siêu dữ liệu và tài nguyên rẽ nhánh, bạn có thể sử dụng cờ –norsrc như sau:
ditto -V --norsrc ~/Sample/Folder /Volumes/NoMetadataBackups
Việc sử dụng loại cờ –norsrc làm mất đi lợi ích chính của ditto, nhưng nó có thể hữu ích trong một số trường hợp.
Bạn có thể tìm hiểu thêm về lệnh ditto tuyệt vời bằng cách đọc trang thủ công của nó, có thể truy cập trong Mac OS X bằng cách nhập:
man ditto
Như thường lệ, hãy sử dụng các phím mũi tên để điều hướng lên và xuống trong trang hướng dẫn.
Trước khi bạn phụ thuộc quá nhiều vào ditto, hãy đảm bảo dùng thử một vài lần với việc di chuyển tệp không quan trọng và hợp nhất thư mục để hiểu cách thức hoạt động của nó với kế hoạch sử dụng của bạn.