Làm thế nào để sao chép một tập tin mà không sao chép dữ liệu của nó với btrfs?


14

Tôi không có kinh nghiệm với btrfs, nhưng nó được quảng cáo là có thể sao chép lại các tập tin.

Trong ứng dụng của tôi, tôi cần sao chép toàn bộ cây thư mục.

Từ những gì tôi học được, btrfs chỉ sao chép lại trong một số bài quét, không phải ngay lập tức. Ngay cả việc chỉ sử dụng cpdường như không kích hoạt bất kỳ sự sao chép nào (ít nhất, dfcho thấy mức độ sử dụng đĩa tăng lên trong kích thước của các tệp được sao chép).

Tôi có thể tránh di chuyển dữ liệu xung quanh hoàn toàn và bảo btrfstrực tiếp sao chép tệp tại một vị trí khác, về cơ bản chỉ là sao chép siêu dữ liệu của nó không?

Về bản chất, tương tự như một liên kết cứng, nhưng với siêu dữ liệu độc lập (quyền, thời gian sửa đổi, ...).


7
cp --reflink=always.
mikeerv

3
Lưu ý rằng đây không phải là bất cứ thứ gì như một liên kết cứng. Khi bạn cp --reflink=always, kết quả từ góc độ người dùng sẽ là hai tệp hoàn toàn độc lập theo mọi cách. Thực tế là hệ thống tập tin cơ bản đang trừu tượng hóa thông qua sao chép trên ghi chỉ là một chi tiết thực hiện. Bạn không nhận được "một liên kết cứng, nhưng với siêu dữ liệu độc lập." Theo hiểu biết của tôi, btrfs không thực hiện bất kỳ sự trùng lặp tự động nào. Tôi nghĩ đó là một kế hoạch trong tương lai nhưng tôi không tích cực về điều đó.
ormaaj

@ormaaj - một liên kết cứng sẽ không có siêu dữ liệu độc lập . và Udo yêu cầu một chi tiết thực hiện . khi bạn thực hiện phản xạ lại một tập tin, về cơ bản bạn sẽ sao chép siêu dữ liệu của nó . Chỉ khi các tham chiếu thay đổi độc lập mà các tệp phân kỳ - và đó là tất cả những gì về sự trùng lặp!
mikeerv

1
@mikeerv Er, tôi khá chắc chắn rằng sự trùng lặp có một ý nghĩa khác. Sự trùng lặp đang lấy các bản sao dữ liệu dư thừa hiện có và thống nhất lại dữ liệu. COW là một phương tiện để giảm thiểu sự trùng lặp, nó không phải là sự trùng lặp.
ormaaj

@ormaaj - Tôi nghĩ đó là một điều kỳ lạ để nói: sự trùng lặp không phải là để giảm thiểu sự trùng lặp.
mikeerv

Câu trả lời:


12

Có hai lựa chọn:

  1. cp --reflink=always
  2. cp --reflink=auto

Cái thứ hai hầu như luôn luôn thích hơn cái thứ nhất. Sử dụng autocó nghĩa là nó sẽ dự phòng để thực hiện một bản sao thực sự nếu hệ thống tệp không hỗ trợ phản xạ (ví dụ: ext4 hoặc sao chép vào chia sẻ NFS). Với tùy chọn đầu tiên, tôi khá chắc chắn rằng nó sẽ hoàn toàn thất bại và ngừng sao chép.

Nếu bạn đang sử dụng điều này như một phần của tập lệnh cần phải mạnh mẽ khi đối mặt với các điều kiện không lý tưởng, auto sẽ phục vụ tốt hơn cho bạn.


bạn có phải là Eric Estrada không?
mikeerv

2
@mikeerv Lol, không. Tên đầu tiên của tôi là Ethan. Điều đó sẽ buồn cười mặc dù; Eric Estrada: diễn viên ban ngày, sysadmin vào ban đêm. Dù bạn có tin hay không, đây là lần đầu tiên sau hơn một thập kỷ đi qua việc xử lý trực tuyến eestradamà bất cứ ai cũng từng hỏi tôi điều đó.
eestrada

2
chắc chắn rồi, Eric. Dù sao, câu trả lời tốt.
mikeerv
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.