Saat ini saya hanya melakukan RSync Directories
seperti:
* * * * * rsync -avz /var/www/public_html/images root@<remote-ip>:/var/www/public_html
Jadi bagaimana saya rsync
satu file seperti /var/www/public_html/.htaccess
,?
Jawaban:
Anda melakukannya dengan cara yang sama seperti yang Anda lakukan pada direktori, tetapi Anda menentukan jalur lengkap ke nama file sebagai sumbernya. Dalam contoh Anda:
rsync -avz --progress /var/www/public_html/.htaccess root@<remote-ip>:/var/www/public_html/
Seperti yang disebutkan dalam komentar: karena -a
termasuk recurse , satu kesalahan ketik kecil dapat membuatnya memulai transfer pohon direktori penuh, jadi pendekatan yang lebih mudah ditemukan mungkin hanya menggunakan -vz
, atau menggantinya dengan -lptgoD
.
Sintaks dasar
rsync options source destination
Contoh
rsync -az /var/www/public_html/filename root@<remote-ip>:/var/www/public_html
Jawaban Michael Place berfungsi dengan baik jika, relatif terhadap direktori root untuk sumber dan target, semua direktori di jalur file sudah ada.
Tetapi bagaimana jika Anda ingin menyinkronkan file dengan jalur sumber ini:
/ source-root / a / b / file
ke file dengan jalur target berikut:
/ target-root / a / b / file
dan direktori a dan b tidak ada?
Anda perlu menjalankan perintah rsync seperti berikut:
rsync -r --include="/a/" --include="/a/b/" --include="/a/b/file" --exclude="*" [source] [target]
Sampai saat ini, dua jawaban tidak benar, mereka akan mendapatkan lebih dari satu file, dan yang lainnya tidak sesederhana mungkin, berikut adalah jawaban yang lebih sederhana IMO.
Yang berikut ini hanya mendapatkan satu file, tetapi Anda harus membuat direktori dest dengan mkdir. Ini mungkin opsi tercepat:
mkdir -p ./local/path/to/file
rsync user@remote:/remote/path/to/file/ -zarv --include "filename" --exclude "*" ./local/path/to/file/
Jika hanya ada satu file di / remote / path, rsync dapat membuat direktori untuk Anda jika Anda melakukan hal berikut. Ini mungkin akan memakan waktu lebih lama karena mencari lebih banyak direktori. Ditambah itu akan membuat direktori kosong untuk direktori di / remote / path yang tidak ada di ./local
cd ./local
rsync user@remote:/remote/path -zarv --include "*/" --include "filename" --exclude "*" .
Ingatlah bahwa urutan --include dan --exclude penting.