rsync - nó có tạo một tệp tạm thời trong khi chuyển không?


36

Theo như tôi có thể thấy rsync không tạo tệp trong thư mục đích cho đến khi hoàn thành.

Điều này có nghĩa là nó tạo tệp trong thư mục tạm thời ở đâu đó và sao chép tệp vào thư mục đích khi hoàn tất.

Trước hết, điều này có đúng không?

Nếu đúng, rsync có thể thiết lập không sử dụng thư mục tạm thời và thay vào đó tạo tệp trong thư mục đích và chỉ cần ghi vào đó cho đến khi hoàn tất?

Câu trả lời:


45

Vâng, nó tạo ra một tập tin tạm thời.

Theo trang man, bạn có thể chỉ định thư mục lưu tệp tạm thời với tham số -T như trong

-T, --temp-dir = DIR tạo các tệp tạm thời trong thư mục DIR

Câu trả lời cho phần thứ hai của câu hỏi của bạn cũng có thể được tìm thấy ở đó:

- tại chỗ

Tùy chọn này thay đổi cách rsync chuyển tệp khi cần cập nhật dữ liệu của tệp: thay vì phương pháp mặc định tạo bản sao mới của tệp và di chuyển tệp vào vị trí khi hoàn tất, thay vào đó, rsync ghi dữ liệu cập nhật trực tiếp vào đích tập tin.


4
Lưu ý quan trọng! Câu hỏi giả định rsync "sao chép tệp vào vị trí", trong khi tài liệu rsync chỉ định rằng rsync thực sự là "di chuyển nó vào vị trí", đó là một PHÂN BIỆT NGAY LẬP TỨC . Điều này đảm bảo rằng tệp xuất hiện ở vị trí đích theo kiểu nguyên tử . Điều này hữu ích để ngăn chặn các điều kiện cuộc đua trong đó một ứng dụng khác đang chờ tệp đích xuất hiện và ngay lập tức mở nó để đọc, nhưng tệp không được sao chép.
Ogre Psalm33

15

Nó tạo một tệp tạm thời, theo mặc định trong thư mục đích và được đặt tên .<FILE_NAME>.<RANDOM_STRING>. Vì vậy, nếu bạn đang sao chép foo.txt, nó sẽ tạo một tệp tmp có tên .foo.txt.GV4H3( GV4H3là chuỗi ngẫu nhiên sẽ khác nhau mỗi khi bạn chạy nó). Bạn có thể kiểm soát hành vi này bằng các rsynctùy chọn sau:

   --partial
          By default, rsync will delete any partially transferred
          file if the transfer is interrupted.  In  some  circum‐
          stances  it  is more desirable to keep partially trans‐
          ferred files. Using the --partial option tells rsync to
          keep  the  partial  file which should make a subsequent
          transfer of the rest of the file much faster.

   --partial-dir=DIR
          A better way to keep partial files than  the  --partial
          option  is  to  specify a DIR that will be used to hold
          the partial data (instead of writing it out to the des‐
          tination file).  On the next transfer, rsync will use a
          file found in this dir as data to speed up the  resump‐
          tion  of  the  transfer and then delete it after it has
          served its purpose.

Vui lòng đọc các phần có liên quan của rsynctrang man (phần sau chỉ là một đoạn trích nhỏ của phần lớn về cách sử dụng --partial-dir).


5

rsync tạo các tệp tạm thời trong thư mục đích. Tập tin đó được đặt tên giống như nguồn nhưng có phần mở rộng. Nó có thể là như thế:

source: foo.bar 
target temp: foo.bar.hzmkjt7 (hzmkjt7 is just an example) 

Phần mở rộng được xóa sau khi tệp đã được xác minh là bản sao chính xác của nguồn. Trong quá trình đổi tên quyền sở hữu, quyền và thời gian sửa đổi được đặt. Vì vậy, có thể bạn không xem tệp vì quyền. Đảm bảo rằng bạn có đủ quyền để xem tất cả các tệp cũng như những tệp không thuộc sở hữu của bạn để xem các tệp tạm thời.


Một quá trình tạo các tệp với sự cho phép của người dùng chạy nó . Không thể không xem các tập tin vì quyền trong trường hợp này.
Ярослав Рахматуллин

Bạn cũng có thể chạy ở chế độ daemon. Hoặc nó có thể được lên lịch như một cronjob. Dù bằng cách nào, có thể người dùng mà rsync đang chạy không phải là người dùng muốn xem tệp tạm thời. Trong trường hợp đó có thể đó là một vấn đề cho phép.
Simon

1
Tệp tạm thời có thể bắt đầu bằng ".". Trong trường hợp này, nó là .foo.bar.hzmkjt7.
interkh
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.