Tek bir dosya nasıl RSYNC yapılır?


95

Şu anda sadece aşağıdaki Directoriesgibi RSync -ing yapıyorum :

* * * * * rsync -avz /var/www/public_html/images root@<remote-ip>:/var/www/public_html

Peki rsynctek bir dosya nasıl olur /var/www/public_html/.htaccess?

Yanıtlar:


160

Bunu bir dizinde yaptığınız gibi yaparsınız, ancak kaynak olarak dosya adına giden tam yolu belirtirsiniz. Örneğinizde:

rsync -avz   --progress  /var/www/public_html/.htaccess root@<remote-ip>:/var/www/public_html/

Yorumlarda belirtildiği gibi: yinelemeyi-a içerdiğinden , küçük bir yazım hatası, tam bir dizin ağacı aktarımını başlatabilir, bu nedenle daha kusursuz bir yaklaşım, onu yalnızca kullanmak veya bununla değiştirmek olabilir .-vz-lptgoD


19
Ayrıca, yalnızca bir dosya gönderiyorsanız, ilerlemesini izleyebilmek için "--progress" parametresini eklemek isteyebilirsiniz.
JoshStrange

Bu, rsyncd.conf dosyasında dosyanın üstünde bir dizine sahip bir modüle ihtiyaç duyduğunuz anlamına mı geliyor (örneğin, reddetme seçeneği silme ile) veya yalnızca yolunu belirterek sunucunun herhangi bir yerine dosya yükleyebilir misiniz? Man sayfası bununla ilgili pek net değil.

3
-a özyinelemeli içerir ve bu tek bir dosya için gerekli değildir, bu bayrağı tek dosya için kullanıp kullanmayacağımı bilmiyorum çünkü dosya adı yanlışlıkla bir dizin haline gelirse istenmeyen davranışlara neden olabilir.
redanimalwar

2
--partial --stats --progress << Bu bayraklar, gerçekten büyük bir dosyaysa yararlıdır ve bozuk bir aktarımdan sonra yeniden başlatılması gerekebilir.
Ahi Tuna

16

Temel sözdizimi

rsync options source destination

Misal

rsync -az /var/www/public_html/filename root@<remote-ip>:/var/www/public_html

Daha fazla oku


14

Michael Place'in yanıtı, hem kaynak hem de hedef için kök dizine göre dosyanın yolundaki tüm dizinler zaten mevcutsa harika çalışıyor.

Ama ya bir dosyayı bu kaynak yolu ile senkronize etmek isterseniz:

/ kaynak-kök / a / b / dosya

aşağıdaki hedef yola sahip bir dosyaya:

/ hedef-kök / a / b / dosya

ve a ve b dizinleri yok mu?

Aşağıdaki gibi bir rsync komutu çalıştırmanız gerekir:

rsync -r --include="/a/" --include="/a/b/" --include="/a/b/file" --exclude="*" [source] [target]

2
Tek tek dosyayı var olan bir klasöre kopyalamak veya klasörleri önceden oluşturmak daha güvenli olmaz mıydı? Klasör veya klasör içeriği senkronizasyonu durumunda, rsync tüm alt klasörleri oluşturalım, sonuçta bu onun işi, ancak bu özel durumda, sadece tek tek dosyaları kopyalamak için parametreleri dahil etmek çok zahmetli ve zor.
Tulains Córdova

@ user1598390 Hangi senaryoyu varsaydığınızı veya hayal ettiğinizi, bunun daha az güvenli olacağından emin değilim, ancak bu komutun belirli biçimini hatırlamaya çalışıyorsanız ve bunu sık sık yapmadıysanız, evet muhtemelen tek dosyayı kopyalamaktan daha az güvenli. Dosya büyükse, yani rsync kopyalama sırasında oluşabilecek hataların çoğunu otomatik olarak işlediği için daha güvenli olabilir. Bazı bağlamlarda, sözdizimim benim için özellikle yararlıydı çünkü bu formda komutlar oluşturan kod yazmıştım, bu nedenle ilgili kodu kapsayan yeterli testler verildiğinde, bu komutlar 'güvenli'.
Kenny Evitt

0

Bugüne kadar, cevaplardan ikisi pek doğru değil, birden fazla dosya alacaklar ve diğeri olabileceği kadar basit değil, işte size daha basit bir IMO cevabı.

Aşağıdakiler tam olarak bir dosya alır, ancak mkdir ile dest dizini oluşturmanız gerekir. Bu muhtemelen en hızlı seçenektir:

mkdir -p ./local/path/to/file
rsync user@remote:/remote/path/to/file/ -zarv --include "filename" --exclude "*" ./local/path/to/file/

/ Remote / path konumunda dosyanın yalnızca bir örneği varsa, aşağıdakileri yaparsanız rsync sizin için dizinler oluşturabilir. Bu muhtemelen biraz daha zaman alacaktır çünkü daha fazla dizinde arama yapar. Ayrıca, / remote / path içindeki ./local içinde olmayan dizinler için boş dizinler yaratacaktır.

cd ./local
rsync user@remote:/remote/path -zarv --include "*/" --include "filename" --exclude "*" .

Unutmayın ki - dahil et ve - hariç tut.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.