2009-06-03 14 views
17

Có thể chỉ định phạm vi thời gian để rsync chỉ hoạt động trên các tệp đã thay đổi gần đây không.Làm cách nào để sử dụng rsync để sao lưu các tệp đã thay đổi trong một khoảng thời gian gần đây?

Tôi đang viết kịch bản để sao lưu các tệp được thêm gần đây qua SSH và rsync có vẻ như một giải pháp hiệu quả. Vấn đề của tôi là các thư mục nguồn của tôi chứa một backlog rất lớn của các tệp cũ hơn mà tôi không quan tâm đến việc sao lưu.

Giải pháp duy nhất mà tôi đã thực hiện cho đến nay là thực hiện tìm kiếm với ctime để tạo tệp --files-from. Tính năng này hoạt động nhưng tôi phải xử lý một số cài đặt cũ với các phiên bản rsync không hỗ trợ --files-from. Tôi đang xem xét việc tạo ra - bao gồm các mẫu theo cùng một cách nhưng rất thích tìm thứ gì đó thanh lịch hơn.

+0

Sau khi bạn đã thực hiện rsync ban đầu của mình vào lần tiếp theo bạn gọi nó, nó sẽ chỉ chuyển các tệp mới hoặc sửa đổi. Đó là mục đích của rsync. – lothar

+0

Một tùy chọn khác là sắp xếp lại bố cục thư mục của bạn mà các tệp bạn không muốn sao lưu nằm trong một đường dẫn khác, để bạn có thể đặt đường dẫn đó vào danh sách bỏ qua cho rsync. – lothar

+0

Tôi sẽ đề nghị sử dụng tùy chọn '-t' của rsync, nhưng điều đó không chính xác làm những gì được yêu cầu – Hasturkun

Trả lời

26

Dường như bạn có thể chỉ định các lệnh shell trong các đối số để rsync (xem Remote rsync executes arbitrary shell commands)

vì vậy tôi đã có thể để hạn chế thành công các tập tin mà rsync nhìn bằng cách sử dụng:

rsync -av remote_host:'$(find logs -type f -ctime -1)' local_dir 

này tìm kiếm bất kỳ tệp nào đã thay đổi trong ngày cuối cùng (-ctime -1) và sau đó rsyncs các tệp đó thành local_dir.

Tôi không chắc liệu tính năng này có được thiết kế hay không nhưng tôi vẫn đang tìm hiểu tài liệu.

+0

Chỉ muốn thả một dòng mà điều này chỉ đến trong siêu hữu ích cho một kịch bản nhập dữ liệu tôi đang sử dụng. Cảm ơn bạn! – Matthew

+1

Xem ra cho điều này mặc dù; nếu bạn có nhiều tệp phù hợp, kết quả của tìm kiếm được nhúng có thể chạy vào giới hạn độ dài dòng lệnh của trình bao. Xảy ra với tôi. – GaryO

+0

Điều này sẽ không giữ cấu trúc thư mục – carlosvini

1

Cách tạo thư mục tạm thời, liên kết tượng trưng hoặc liên kết cứng các tệp trong, sau đó kết nối lại?

2

Tại sao không chỉ lấy nhiệt khi sao lưu toàn bộ thư mục một lần và tận dụng khả năng sao lưu gia tăng do rsync và rdiff và người anh em họ cung cấp, bạn sẽ không lãng phí không gian đĩa mà chúng được sao lưu vào không thay đổi vĩnh viễn.

Sao lưu toàn bộ nội dung đơn giản hơn và ít có rủi ro về lỗi hơn. Cố gắng sao lưu có chọn lọc một số tập tin và không phải là những người khác là một công thức để không sao lưu những gì bạn cần mà không nhận ra nó, sau đó bị đốt cháy khi bạn không thể khôi phục một tập tin quan trọng.

Nếu không, bạn nên tổ chức lại thư mục nguồn để có ít 'ra quyết định' hơn trong tập lệnh sao lưu của mình.

+0

Tôi thường sẽ đồng ý về nguy cơ lỗi, nhưng tôi sẽ không bao giờ có bất kỳ sử dụng cho các tập tin cũ (nhật ký và hồ sơ khác mà sẽ không bao giờ thay đổi). Tôi sẽ chỉ lấy nhiệt nhưng ý nghĩ phải tải xuống và thường xuyên xử lý lại vài gigabyte không mong muốn sưng lên là những gì nhắc nhở câu hỏi này ở nơi đầu tiên. Sắp xếp lại có lẽ là giải pháp - Tôi không thể thay đổi cấu trúc hiện có nhưng tôi có thể thiết lập một thư mục tạm thời như Hasturkun đề xuất. – Ken

+0

Đối với tôi, tôi muốn chuyển từ xa sang địa phương, xử lý các tệp, sau đó xóa các tệp cũ (mtime +30) khỏi địa phương để tiết kiệm dung lượng. Naive rsync tải xuống lại những ứng dụng cũ vào lần tiếp theo bởi vì chúng hiện thiếu trên máy cục bộ. – GaryO

1

Tôi khuyên bạn nên bỏ rsync và xem bản sao lưu rdiff?

+0

Cảm ơn tôi sẽ xem xét - Tôi đã xem xét nó trước đó nhưng vấn đề tương thích CIFS khiến tôi tắt. (http://rdiff-backup.nongnu.org/FAQ.html#cifs) – Ken

Các vấn đề liên quan