GNU/Linux >> Belajar Linux >  >> Linux

Mengapa rsync tidak menggunakan delta-transfer untuk file lokal?

Menurut halaman manual, psusi benar:

-W, --whole-file :Transfer mungkin lebih cepat jika opsi ini digunakan ketika bandwidth antara mesin sumber dan tujuan lebih tinggi daripada bandwidth ke disk (terutama ketika "disk" sebenarnya adalah sistem file jaringan). Ini adalah default saat sumber dan tujuan ditetapkan sebagai jalur lokal, tetapi hanya jika tidak ada opsi penulisan batch yang diterapkan.


Jawaban langsung untuk pertanyaan ini adalah:

Gunakan --no-W flag untuk memaksa kompresi delta, tidak peduli lokal atau jarak jauh.

Perbarui: Sepertinya ada lebih banyak cerita. delta compression tampaknya diaktifkan hanya antara menerima dan mengirimkan proses rsync. Saat mengeluarkan file ke sistem file, rsync mungkin masih menulis seluruh file, bahkan dengan kompresi delta aktif.

Lihat investigasi "Wakan Tanka" di sini.

Pembaruan 2: --inplace opsi hanya menulis bagian file yang diubah. Namun perhatikan bahwa ini bertentangan dengan --sparse dan tidak direkomendasikan, oleh manual, ketika file tujuan sedang digunakan.


Secara default, rsync terlebih dahulu membuat salinan baru dari file target dan kemudian menggantinya, untuk berbagai alasan keamanan. Anda dapat menimpanya dengan menentukan --inplace bersama dengan --no-whole-file . Ini memberi tahu rsync untuk melakukan pengeditan di tempat pada file target, menerima berbagai risiko (biasanya kecil untuk situasi ini) seperti yang didokumentasikan di halaman manual.


Linux
  1. Mengapa Find -mtime +1 Hanya Mengembalikan File Lebih Lama dari 2 Hari?

  2. Bagaimana Cara Menggunakan Inotifywait Untuk Menonton Direktori Untuk Pembuatan File Ekstensi Tertentu?

  3. Script Shell Untuk Memindahkan File Terlama?

  1. Kapan Dan Mengapa Saya Harus Menggunakan Pembaruan Apt-get?

  2. Mengapa `zip` Dalam A For Loop Bekerja Saat File Ada, Tapi Tidak Saat Tidak?

  3. Tunggu Beberapa File Selesai Diunduh?

  1. Mengapa stdout perlu pembilasan eksplisit saat dialihkan ke file?

  2. Apakah sebaiknya menggunakan git untuk mengontrol versi file konfigurasi?

  3. Bagaimana cara menghapus file .fuse_hidden*?