Sửa đổi một tệp lớn, sau đó có thể khôi phục các thay đổi đang thực hiện (gần như) tại chỗ


1

Tôi đang khôi phục dữ liệu từ ổ đĩa 500 GB bị hỏng. Tôi đang sao chép dữ liệu (phân vùng ext4) sang tệp hình ảnh 500 GB. Quá trình này mất khoảng 3 tháng để sao chép tổng cộng (có, tháng). Vì vậy, tôi đang sử dụng ddđể kiên nhẫn điền vào tập tin hình ảnh. Đầu tiên tôi gửi một đoạn vào tệp tạm thời, sau đó đặt đoạn dữ liệu vào tệp sao lưu và vì vậy ...

Vấn đề là tôi muốn truy cập vào hình ảnh được lấp đầy một phần và khôi phục một số dữ liệu trước khi quá trình sao lưu kết thúc. Tôi đã gắn nó chỉ đọc và sử dụng photorectestdiskvà đó là ok. Nhưng tôi cũng muốn thử fsck(cố gắng) sửa chữa phân vùng. Sau khi xem dữ liệu, tôi muốn khôi phục các thay đổi fsck và tiếp tục sao chép.

Tôi biết các công cụ như rsync, rdiffgitphái sinh ( bup, git-annex...) có thể giúp ích. nhưng tôi tự hỏi nếu có một cách để làm điều này tại chỗ . Không lấy thêm 500Gb dữ liệu gốc được lập chỉ mục.

Tôi không muốn khả năng phiên bản. Tôi không muốn sao lưu tập tin của mình. Quy trình công việc sẽ là một cái gì đó như:

  1. Tôi có original_500GB_file.img-> 500GB dữ liệu
  2. Tôi sửa đổi 2GB của tập tin. Nói ngay bây giờ tôi có modified_500GB_file.imgvà các tệp phụ trợ khác -> dưới 600 GB dữ liệu (500 bản gốc + 2 đã sửa đổi + một số siêu dữ liệu)
  3. Khi tôi vui vẻ thực hiện các thay đổi, quay lại và quay lại điểm 1.

Làm thế nào có thể đạt được điều này? Nó có khả thi với khả năng chụp nhanh BTRFS không ?? (tiếc là tôi có tệp trong phân vùng NTFS)

Cảm ơn.

Câu trả lời:


2

Cách dễ nhất thực sự sẽ là sử dụng BTRFS hoặc ZFS và khả năng chụp nhanh của họ, vâng. Tôi đã không làm việc quá nhiều với BTRFS (chỉ ZFS ngay bây giờ), nhưng việc khôi phục sẽ không có vấn đề gì.

(Tôi sẽ viết dựa trên ZFS, nhưng nó sẽ hoạt động khá giống với BTRFS)

Trước khi bạn bắt đầu quá trình khôi phục, bạn hãy chụp "ảnh chụp nhanh" hệ thống tệp hiện tại của bạn chứa hình ảnh 500 GB.

Sau đó, bạn có thể sao chép tất cả dữ liệu bạn nhận được trong quá trình khôi phục sang một số vị trí khác (không nằm trong cùng hệ thống tệp, nếu không chúng sẽ bị hủy trong quá trình khôi phục!). Chỉ những thay đổi trên hình ảnh 500 GB sẽ chiếm dung lượng. Vì vậy, nếu bạn chỉ thay đổi 50 GB, bạn sẽ cần tổng cộng ~ 550 GB trong hệ thống tệp.

Nếu bạn đã hoàn tất việc khôi phục một phần này, bạn có thể thực hiện "khôi phục" và đặt lại hệ thống tệp về trạng thái như khi bạn thực hiện "ảnh chụp nhanh".

Lưu ý rằng cơ chế snapshot / rollback luôn hoạt động cho một hệ thống tệp hoàn chỉnh, không chỉ các tệp đơn lẻ.

Chỉnh sửa:

Tôi nghĩ rằng một số phiên bản NTFS cũng có khả năng chụp nhanh. Windows 7 sẽ cho phép bạn chơi với nó, nhưng như tôi nghe thấy nó đã bị xóa trong Windows 8 .... nếu bạn nhấp chuột phải vào một tệp (hình ảnh 500 GB), thì sẽ có một số tùy chọn cho biết "các phiên bản trước của tệp này ".

Một tùy chọn khá phức tạp khác: thiết lập một máy ảo, đặt tệp 500GB ở đó. Phần mềm máy ảo (như VMware, Virtualbox, VirtualPC) cũng cho phép bạn chụp ảnh nhanh (của toàn bộ hình ảnh hệ điều hành, bao gồm 500GB của bạn) và cuộn chúng lại. Nhưng điều này sẽ yêu cầu bạn cài đặt một HĐH khác bên trong một máy ảo và tất cả ...


2

Tôi tìm thấy một giải pháp tốt và dễ dàng cho vấn đề của tôi. Đoạn cuối của Slizzered về các máy ảo đã cho tôi một gợi ý. Bạn có thể sử dụng qemuphần mềm mà không cần phải thực sự tải một máy ảo. Tôi tìm thấy các thông tin liên quan ở đâyở đây .

Trước tiên, bạn phải tạo một bản sao trên tập tin ghi (COW) của hình ảnh của bạn. Điều này sẽ sử dụng của bạn original_500GB_file.imgnhư là cơ sở của nó. Các tập tin lớn sẽ không được chỉnh sửa vì nó được sử dụng dưới dạng chỉ đọc. Một COW có kích thước tối thiểu và sẽ chỉ phát triển khi thay đổi được thực hiện. Đúng thứ tôi cần:

$ qemu-img tạo -f qcow2 -b gốc_500GB_file.img dùng một lần.qcow2

Định dạng 'dùng một lần.qcow2', fmt = qcow2 kích thước = 498000000000 sao lưu

$ ls -l dùng một lần.qcow2

-rw-r - r-- 1 người dùng dertalai 204288 abr 15 20:01 dùng một lần.qcow2

Bây giờ bạn chỉ cần ảo hóa cặp gốc_read-only + cow_writable thành một thiết bị khối có thể sử dụng duy nhất:

# modprobe nbd

# qemu-nbd -c / dev / nbd0 dùng một lần.qcow2

/dev/nbd0đã sẵn sàng để sử dụng. Bạn có thể fsck nó hoặc thậm chí gắn kết nó và làm bất cứ điều gì bạn cần. Khi bạn đã hoàn tất và muốn khôi phục các thay đổi, chỉ cần giải phóng thiết bị chặn khỏi mọi quy trình đang sử dụng và xóa tệp COW nếu bạn muốn:

# qemu-nbd -d / dev / nbd0

# rmmod nbd

$ rm dùng một lần.qcow2

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.