Lý do cho rsync KHÔNG chuyển tất cả các tệp?


8

Có ai biết lý do phổ biến cho sự chênh lệch thâm hụt lớn như vậy về số lượng tệp được chuyển khi sao lưu thư mục chính LARGE của tôi bằng cách sử dụng rsync trên thiết lập Ubuntu 10.04 LTS không? Máy hoạt động ổn định và tất cả các ổ đĩa đều là ext4 sạch - không có lỗi từ fsck.ext4.

Number of files: 4857743
Number of files transferred: 4203266

Đó là sự khác biệt của 654.477 tệp !!!

Tôi muốn sao lưu thư mục FULL FULL của mình vào một ổ đĩa ngoài để tôi có thể WIPE hoàn toàn và định dạng lại hệ thống của mình và sau đó khôi phục nhà của tôi từ bản sao lưu rsync này, nhưng tôi lo ngại rằng tôi đang thiếu các tệp dữ liệu quan trọng.

Tôi đã đăng nhập bằng root và sử dụng rsync để sao lưu thư mục / home / hholtmann / * của mình vào ổ đĩa sao lưu dự phòng trong / mnt / wd750 / c51 / home /

Đây là dòng lệnh tôi đã sử dụng làm root

root@c-00000051:~# pwd
/root
root@c-00000051:~# rsync -ah --progress --stats /home/hholtmann /mnt/wd750/c51/home/ -v

Đầu ra tóm tắt được chụp từ rsync

Number of files: 4857743
Number of files transferred: 4203266
Total file size: 487.41G bytes
Total transferred file size: 487.41G bytes
Literal data: 487.41G bytes
Matched data: 0 bytes
File list size: 102.48M
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 487.75G
Total bytes received: 82.42M

Chỉ để so sánh một thư mục con dự án quan trọng trong nhà của tôi sau rsync:

Sự khác biệt của byte giữa một thư mục con nguồn và đích du

root@c-00000051:~# du -cs /home/hholtmann/proj/
18992676    /home/hholtmann/proj/
18992676    total
root@c-00000051:~# du -cs /media/wd750/c51/home/hholtmann/proj/
19006768    /mnt/wd750/c51/home/hholtmann/proj/
19006768    total

TUY NHIÊN: Không có sự khác biệt giữa các tập tin FILE giữa các thư mục con cùng nguồn và đích

root@c-00000051:~# find /home/hholtmann/proj/ -type f -follow | wc -l
945937
root@c-00000051:~# find /mnt/wd750/c51/home/hholtmann/proj/ -type f -follow | wc -l
945937

Tại sao kết quả bất ngờ như vậy? Một tập tin là một tập tin ... đặc biệt là trong thư mục nhà của người dùng!

Tôi đang thiếu gì? Hay đây là một dấu hiệu tôi đã sẵn sàng để quản lý!?!

GIẢI PHÁP và TRẢ LỜI:

Câu trả lời được chọn dưới đây giải thích cho sự khác biệt về số lượng byte và kỳ vọng không chính xác của tôi về dữ liệu tóm tắt rsync. Tôi chỉ ngạc nhiên bởi sự khác biệt byte này do cả hai khối đều là ext4 với kích thước khối mặc định. Tôi chỉ giả định rằng mọi tập tin sẽ có cùng một không gian về mặt dusố.

Tôi DID tìm thấy một số tệp KHÔNG rsync bằng cách thêm đầu ra dài dòng hơn vào rsync bằng cách thêm -vvvào rsync và chạy lại.

Những gì tôi thấy là lỗi từ rsync nói rằng nó KHÔNG thể ghi bất kỳ tệp thư mục DROPBOX nào của tôi đến đích do "thuộc tính mở rộng" trên các tệp. rsync đã bỏ qua tất cả các tập tin đường dẫn dropbox của tôi.

Kết thúc âm lượng / nhà của tôi được gắn kết với user_xattrtùy chọn gắn kết ext4 trong tệp / etc / fstab:

/dev/mapper/vg1-lv_home /home   ext4 nobarrier,noatime,user_xattr 0 2
# I HAD to add the ,user_xattr option to match my home volume
/dev/sda1           /mnt/wd750  ext4 nobarrier,noatime,user_xattr 0 2

Sau khi thực hiện một rsync đầy đủ khác lần thứ 3, tôi quyết định để số lượng tập tin chạy suốt đêm trên thư mục nhà đầy đủ của mình và sao lưu rsync'd:

root@c-00000051:~# find /home/hholtmann/ -type f | wc -l
4203266
root@c-00000051:~# find /mnt/wd750/c51/home/hholtmann/ -type f | wc -l
4203266

** MỘT VẤN ĐỀ HOÀN HẢO

PHẦN KẾT LUẬN:

** Luôn đảm bảo khối lượng sao lưu của bạn được gắn với các tùy chọn gắn kết hệ thống tệp chính xác giống như nguồn VÀ bật ghi nhật ký đầy đủ với rsync để phân tích grep sau này để tìm kiếm bất kỳ lỗi nào trong danh sách tệp dài! **


Chém dấu gạch chéo trong lệnh rsync của bạn có thể là một ý tưởng tốt ở đây.
ewwhite

cảm ơn .. nhưng đã phạm đủ sai lầm trong quá khứ để học bài học của tôi và tìm hiểu hiệu ứng khác nhau từ có hoặc không có dấu gạch chéo trên nguồn / dir / không phải là một vấn đề trong trường hợp này. yêu cầu rsync sao chép toàn bộ nguồn / đường dẫn / thư mục và tạo trong cơ sở / đường dẫn đích /
Heston T. Holtmann

Bạn đã chạy rsync nhiều hơn một lần? Bạn có chắc chắn rằng bạn chỉ đang tìm kiếm một thực tế rằng rsync sẽ không truyền lại một tệp đã giống hệt giữa nguồn và đích?
Zoredache

Bạn đã chạy một diffđể xem sự khác biệt thực tế là gì?
Michael Hampton

1
Nếu tính toàn vẹn dữ liệu là mục tiêu của bạn thì tại sao phải mất thời gian để xác nhận vấn đề? man difflà bạn của bạn về cách sử dụng diff. Tiện ích md5deep cũng có thể sử dụng hữu ích.

Câu trả lời:


10

Có 2 phần cho câu hỏi này. Đầu tiên, tại sao có sự khác biệt giữa "Số lượng tệp" và "Số lượng tệp được chuyển". Điều này được giải thích trong trang web rsync:

Số lượng tệp : là số lượng của tất cả các "tệp" (theo nghĩa chung), bao gồm các thư mục, liên kết tượng trưng, ​​v.v.

Số lượng hồ sơ chuyển nhượng : là số lượng các tập tin bình thường đã được cập nhật thông qua thuật toán delta-chuyển rsync, mà không không bao gồm dirs tạo, liên kết tượng trưng, vân vân .

Sự khác biệt ở đây phải bằng tổng số lượng thư mục, symnlinks, các tệp đặc biệt khác. Những người không được "chuyển" mà chỉ được tạo lại.

Bây giờ cho phần thứ hai, tại sao có sự khác biệt kích thước với du. du hiển thị dung lượng ổ đĩa được sử dụng bởi một tệp, không phải kích thước của tệp. Cùng một tệp có thể chiếm một lượng không gian đĩa khác nhau, ví dụ như các hệ thống tệp bị chặn khác nhau.

Nếu bạn vẫn lo lắng về tính toàn vẹn dữ liệu, một cách dễ dàng để chắc chắn là tạo băm cho tất cả các tệp của bạn và so sánh:

( cd /home/hholtmann && find . -type f -exec md5sum {} \; ) > /tmp/hholtmann.md5sum
( cd /media/wd750/c51/home/ && md5sum -c /tmp/hholtmann.md5sum )

Cảm ơn đã dành thời gian để làm rõ các định nghĩa cho tôi .. mà DOES giải thích cho một sự khác biệt rất lớn như vậy. Tôi đã có thể xác thực chuyển khoản của mình về tổng số tệp giữa nguồn và đích bằng cách chạy số lượng tệp .. xem câu hỏi đã chỉnh sửa của tôi để biết chi tiết.
Heston T. Holtmann

4

Cho tất cả những linh hồn lạc lối nghèo khổ khác làm việc từ kỳ nghỉ giữa đêm khuya,

--checksum làm cho rsync thực sự kiểm tra nếu có thay đổi trong các tệp, nếu không, nó sẽ kiểm tra dấu thời gian và kích thước tệp và gọi nó là một ngày,

điều này là đủ trong 99,9% các trường hợp và cho phép bạn đốt cháy trong phần còn lại của 0,01% cho đến khi bạn tìm ra điều này


1

Hãy thử làm theo, điều này có thể giúp bạn,

rsync -avH --delete /home/hholtmann/ /media/wd750/c51/home

2
Cái gì đây -avH?
Quạt Qi

0

Tôi cũng có thể thêm một cái gì đó tôi đã học.

Tôi đã sử dụng lệnh rsync /path/source/* /path/to/destination/*(chú ý hình cầu). Thật là khó xử vì 90% các tệp của tôi đã được chuyển với một vài ngoại lệ (thậm chí nằm trong cùng thư mục với một số tệp đã chuyển). Sau khi loại bỏ *nguồn và đích, tất cả đều được chuyển. ¯ \ _ (ツ) _ /


Cố gắng để toàn cầu là tốt, sai, sai. Nó có thể làm việc cho (các) nguồn. rsync cho phép nhiều nguồn nhưng chỉ có MỘT đích. rsync source/* dest/*sẽ có tác dụng sao chép tất cả các tệp phù hợp với nguồn / * VÀ những tệp phù hợp với số phận / * vào số mệnh được liệt kê cuối cùng / *!
Steven dễ dàng thích thú
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.