Sử dụng `rsync` như nâng cao hơn` cp`


3

Để sao chép các tệp lớn (và / hoặc số lượng lớn tệp), đặc biệt là trên các đĩa, tôi muốn tránh sử dụng Finder vì nó thường thất bại với một số thông báo lỗi vô nghĩa và / hoặc khiếu nại về quyền.

Thay vào đó, tôi đã xem xét việc sử dụng rsync- hay cụ thể hơn là phiên bản mới nhất rsynccó sẵn từ Homebrew , mà cho đến ngày hôm nay, là:

rsync  version 3.1.1  protocol version 31

Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes, no prealloc, file-flags

(Đó là những khả năng mặc định mà Homebrew sử dụng.)

Vấn đề là nó rsyncvô cùng phức tạp và tôi không bao giờ chắc chắn liệu mình có đang sử dụng các đối số phù hợp hay không, nếu có những thứ khác mà tôi nên sử dụng:

rsync \
    --8-bit-output \
    --acls \
    --backup \
    --devices \
    --exclude='.DS_Store' \
    --executability \
    --group \
    --human-readable \
    --inplace \
    --itemize-changes \
    --owner \
    --perms \
    --progress \
    --prune-empty-dirs \
    --recursive \
    --safe-links \
    --specials \
    --stats \
    --times \
    --update \
    --verbose \
    --xattrs \
    'foo' /path/to/destination/

Luận điểm Tôi không chắc mình có nên sử dụng hay không, chủ yếu là vì tôi không chắc chắn 100% họ làm gì:

  • (một trong những tùy chọn khác cho liên kết thay vì '--safe-links')
  • --quan hệ
  • - thưa thớt
  • - một phần

Bất cứ một đề nghị nào khác?


Bạn đã xem xét sử dụng ditto thay thế?
njboot

Câu trả lời:


2

Trừ khi bạn có một số nhu cầu cụ thể, tôi sẽ loại bỏ hầu hết các tùy chọn đó và giữ cho nó đơn giản: rysnc -aEv(trên phiên bản OS X mặc định) hoặc rsync -aXv(trên phiên bản Homebrew).

Tùy chọn

  • -alà chế độ lưu trữ, về cơ bản có nghĩa là bảo tồn siêu dữ liệu (dấu thời gian, quyền, v.v.) và thực hiện một bản sao đệ quy. Đây là những gì bạn muốn cho các hoạt động sao lưu hoặc sao chép tiêu chuẩn của bạn.

  • -E/ -Xbảo tồn các thuộc tính mở rộng ( còn gọi là nhánh tài nguyên). Trước đây, phiên bản rsync tích hợp có chức năng đặc biệt để bao gồm các yêu cầu HFS + về vấn đề này, nhưng các phiên bản mặc định mới hơn của rsync có thể được cải thiện về vấn đề đó ngay bây giờ. Tôi sẽ nghiêng về việc sử dụng phiên bản tích hợp trừ khi bạn có lý do cụ thể không.

  • -vlà tùy chọn dài dòng và đơn giản là giúp dễ dàng theo dõi những gì đang diễn ra nếu bạn đang chạy cái này trong cửa sổ Terminal. Nếu nó sẽ được chạy trong một tập lệnh, bạn có thể loại bỏ nó.

Trừ khi bạn biết bạn cần chúng, bạn có thể bỏ qua hầu hết các tùy chọn mà bạn đã có. Một số được sao chép bằng lệnh lưu trữ và một số khác (như --inplace, có thể làm chậm mọi thứ và khiến hệ thống tập tin ở trạng thái không nhất quán) chỉ cần thiết cho các trường hợp cạnh cụ thể. Tự mình làm và giữ mọi thứ đơn giản - nếu bạn gặp phải các vấn đề cụ thể với các tùy chọn tôi đã liệt kê, có thể liệt kê những vấn đề đó (trong một câu hỏi riêng nếu cần).

Bên cạnh đó, gặp vấn đề sao chép qua Finder là một chút IMO cờ đỏ. Mặc dù có thể không phải lúc nào cũng nhanh như một số tùy chọn, nhưng nó không nên ném các thông báo lỗi. Bạn có thể muốn xác minh / sửa chữa đĩa của mình trong Disk Utility.


1
Một phần mong muốn của tôi là tìm hiểu thêm về các tùy chọn khác nhau này và nơi tôi có thể muốn sử dụng chúng. Ví dụ, một số trong số chúng dường như phải làm với chỉ báo cáo những gì đã được thực hiện sau khi hoàn thành tất cả. Đối với Finder, tôi biết ý của bạn là gì, nhưng trong trường hợp này, nó thường là một cái gì đó giống như một thư mục bên trong một gói .dvdmedia có quyền lạ hoặc những thứ tương tự. Có hàng tấn trang web trong Google dường như lặp lại man rsyncthông tin nhưng không có trang nào có giải thích sâu hơn / dễ đọc hơn về những gì họ làm và khi nào nên / không nên sử dụng.
TJ Luoma

Các thuộc tính mở rộng không giống như các nhánh tài nguyên.
Max Ried

@MaxRied đúng. Sẽ chính xác hơn khi nói rằng các thuộc tính mở rộng là một khái niệm tổng quát hơn, trong đó các nhánh tài nguyên là một triển khai cụ thể của Mac / HFS +. Nhưng đối với các mục đích Mac, chúng có thể thay thế được ít nhiều.
kẻ cướp

Theo hiểu biết của tôi, các bộ chỉnh lưu là nội dung tệp thực tế hơn trong khi xattrs có nhiều chú thích hơn. Nhưng vâng, họ có thể thi đua với nhau.
Max Ried

-1

bạn có thể sử dụng dittomột cp cao cấp hơn và được tạo bởi Apple.


Bạn có thể cho một ví dụ về cách nó được sử dụng?
Jash Jacob

Apple đã phát triển việc triển khai cp (tốt hơn) của riêng mình. Lệnh này, được gọi là "ditto", không chỉ sao chép các tệp từ thư mục nguồn vào thư mục đích, tạo thư mục đích nếu nó không tồn tại; nhưng cũng sẽ hợp nhất nội dung của thư mục nguồn với thư mục đích nếu nó tồn tại. ditto ~/Documents/MyFolder ~/Desktop/MyNewFolder@JashJacob
Ginfuru
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.