Hãy thử tar
, pax
, cpio
, với một cái gì đó đệm.
(cd /home && bsdtar cf - .) |
pv -trab -B 500M |
(cd /dest && bsdtar xpSf -)
Tôi đề nghị bsdtar
thay tar
vì bởi vì ít nhất trên một số bản phân phối Linux tar
là GNU tar trái với bsdtar
(từ libarchive
) không xử lý việc bảo tồn các thuộc tính mở rộng hoặc thuộc tính ACL hoặc linux.
pv
sẽ đệm tới 500M dữ liệu để có thể điều chỉnh tốt hơn các dao động về tốc độ đọc và ghi trên hai hệ thống tệp (mặc dù trong thực tế, có thể bạn sẽ có một đĩa chậm hơn và cơ chế ghi lại của HĐH sẽ thực hiện việc đệm như tốt vì vậy nó có thể sẽ không làm cho nhiều sự khác biệt). Các phiên bản cũ hơn pv
không hỗ trợ -a
(để báo cáo tốc độ trung bình), bạn có thể sử dụng pv -B 200M
một mình ở đó.
Trong mọi trường hợp, những cái đó sẽ không có giới hạn cp
, đó là đọc và viết tuần tự. Ở đây, chúng tôi có hai hoạt tar
động đồng thời, vì vậy một người có thể đọc một FS trong khi người kia đang bận chờ đợi FS khác hoàn thành việc viết.
Đối với ext4 và nếu bạn đang sao chép vào một phân vùng lớn nhất bằng nguồn, hãy xem phần clone2fs
nào hoạt động như thế ntfsclone
, đó là sao chép các khối được phân bổ duy nhất và tuần tự, do đó, lưu trữ xoay có thể sẽ hiệu quả nhất.
partclone khái quát rằng với một vài hệ thống tập tin khác nhau.
Bây giờ một vài điều cần xem xét khi nhân bản một hệ thống tập tin.
Nhân bản sẽ sao chép tất cả các thư mục, tệp và nội dung của chúng ... và mọi thứ khác. Bây giờ mọi thứ khác thay đổi từ hệ thống tập tin để hệ thống tập tin. Ngay cả khi chúng tôi chỉ xem xét các tính năng phổ biến của các hệ thống tệp Unix truyền thống, chúng tôi phải xem xét:
- liên kết: liên kết tượng trưng và liên kết cứng. Đôi khi, chúng ta sẽ phải xem xét phải làm gì với các liên kết tượng trưng hoặc liên kết tuyệt đối chỉ ra khỏi hệ thống tệp / thư mục để sao chép
- lần sửa đổi, truy cập và thay đổi lần cuối: chỉ có thể sao chép hai lần đầu tiên bằng API hệ thống tập tin (cp, tar, rsync ...)
- thưa thớt: bạn đã có tệp thưa thớt 2TB đó là hình ảnh đĩa VM chỉ chiếm 3 GB dung lượng đĩa, phần còn lại thưa thớt, thực hiện một bản sao ngây thơ sẽ lấp đầy ổ đĩa đích.
Sau đó, nếu bạn xem xét ext4
và hầu hết các hệ thống tệp Linux, bạn sẽ phải xem xét:
- ACL và các thuộc tính mở rộng khác (như các thuộc tính được sử dụng cho
SELinux
)
- Các thuộc tính Linux như cờ không thay đổi hoặc chỉ nối thêm
Không phải tất cả các công cụ đều hỗ trợ tất cả những công cụ đó hoặc khi chúng hoạt động, bạn phải kích hoạt nó một cách rõ ràng như --sparse
, --acls
... tùy chọn rsync
, tar
... Và khi sao chép vào một hệ thống tệp khác, bạn phải xem xét trường hợp chúng không hỗ trợ bộ tính năng tương tự.
Bạn cũng có thể phải xem xét các thuộc tính của chính hệ thống tệp như UUID, không gian dành riêng cho root, tần số fsck, hành vi nhật ký, định dạng của thư mục ...
Sau đó, có các hệ thống tệp phức tạp hơn, nơi bạn thực sự không thể sao chép dữ liệu bằng cách sao chép tệp. Xem xét ví dụ zfs
hoặc btrfs
khi bạn có thể chụp ảnh nhanh các subvolume và tách chúng ra ... Chúng sẽ có các công cụ chuyên dụng riêng để sao chép dữ liệu.
Bản sao byte sang byte của thiết bị khối (hoặc ít nhất là các khối được phân bổ khi có thể) thường an toàn nhất nếu bạn muốn đảm bảo rằng bạn sao chép mọi thứ. Nhưng hãy cẩn thận với sự cố xung đột UUID và điều đó ngụ ý rằng bạn đang sao chép vào một thứ gì đó lớn hơn (mặc dù bạn có thể thay đổi kích thước bản sao chụp nhanh của nguồn trước khi sao chép).
cp
chậm, các phương pháp khác cũng sẽ chậm. Trừ khi nó không sao chép theo định hướng tệp