SSH bağlantısını kapattıktan sonra rsync işini tamamlama


13

Kullanarak bir bilgisayardan diğerine büyük miktarda dosya aktarıyorum rsync. Ben kaynak bilgisayara SSHing ve böyle bir komut yürüterek yapıyorum:

sudo rsync ssh --rsync-path="sudo rsync" source_dir user@host.com:dest_dir.

Ben eklemek bile nohupbu komutun önce her ı yakın ben, bağlantı kapanır SSHed hangi terminal penceresinde dışarı.

SSH bağlantımı kapattığımda dosya aktarımımın devam etmesini nasıl sağlayabilirim?

Yanıtlar:


16

Nedeni nohupprogramı standart IO dosyaları ile çalıştığı için size yardım etmiyor olduğunu.

İşte ' nohup için Wiki Sayfasından bir alıntı :

Not - Arka plandaki işlerin desteklenmemesi, genellikle uzak bir SSH oturumundan çıkış yaparken bunların sonlandırılmasını önlemek için kullanılır. Bu durumda sıklıkla ortaya çıkan farklı bir sorun, ssh'nin arka plan işlerinden / işlerine veri kaybetmeyi reddettiği için oturumu kapatmayı ("askıda kalması") reddetmesidir. Bu sorun, üç G / Ç akışının tümünü yeniden yönlendirerek de aşılabilir:

nohup ./myprogram > foo.out 2> foo.err < /dev/null &Ayrıca, kapatılan bir SSH oturumunun bağlı işlemlere her zaman bir HUP sinyali göndermediğini unutmayın. Diğerleri arasında, bu bir sözde terminalin tahsis edilip edilmediğine bağlıdır.

Bunun için kullanabilirsiniz screen.

Sadece aşağıdakilerle bir ekran oturumu oluşturun: screen -S rsync ardından ekranınızı CTRL+A d

Ve SSH ile bağlantıyı kesebilirsiniz


4
Kesilmesi durumunda herhangi bir iş yaparken, örneğin kayıp bir bağlantı ile sorunlu, daha sonra bir ekran oturumunda çalıştırmak eklemek istiyorum. Ekran yanlışlıkla bağlantı kaybına karşı koruma sağlamak üzere tasarlanmıştır. Uzaktan oturum açabilir, ekranı açabilir, çalışmanızı başlatabilir ve bağlantıyı kaybederseniz, çalışan herhangi bir ekran örneğine yeniden bağlanabilirsiniz. Ekranın başka yararlı işlevleri de vardır - oturumu bir günlük dosyasına kaydetmek, tek bir oturumda birden çok "ekrana" (ağ ek yükü kaydetmek) ve birden çok görüntüleyiciye (Sınıf stili) sahip olmak. Ayrıca tmux'un bir ekran alternatifi olduğunu belirtmek gerekir.
Johan

6

Bu ekran komutu gayet iyi, ama tam olarak ihtiyaçlarım için işe yaramadı.

Bu çok daha iyi çalıştı:

nohup rsync -va --delete ###.###.###.###:/var/www/sites/ /var/www/sites < /dev/null &

benim için çalıştı, kabul edilen cevap gibi, teşekkürler
Salaros
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.