Scp gibi ancak dosya ve klasörleri silmek için başka komutlar var mı?


14

Uzak bir yere şeyler kopyalamak için scp kullanıyorum. Ancak bazen scp beklendiği gibi çalışmaz, bazen kopyanın düzgün bir şekilde tamamlanmadığını fark ettim (muhtemelen kopyaladığım klasöre yeni dosyalar eklediğimde).

Bu yüzden önce uzak klasörü kaldırmak ve daha sonra tam olarak ihtiyacım olan şey olduğundan emin olmak için kopyayı yapmak istiyorum.

Scp (örn. Srm veya smv) gibi başka komutlar var mı? Yoksa uzak klasörleri ve dosyaları kaldırmanın bir yolu var mı?

Yanıtlar:


19

sshKomut uzaktaki bilgisayarda hemen hemen herhangi bir komutu çalıştırmak için izin verecek, örneğin

ssh yourlogin@remotehost rmdir somedir

bu örnekte somedir, girişinizin giriş dizinine göredir.


Bunun için teşekkürler. Metod ile ilgili tek sorun, her aradığınızda tekrar "oturum açmak" zorunda olduğudur :(. Hedefim gömülü olduğundan, hepsi aşırı yazılmış olduğu için ssh anahtarlarını kullanamıyorum, bu yüzden deniyorum . rsync görünüyor umut verici bir komutla bunu Ama bu yana 1) soru :) cevap yok.
code_fodder

5
@code_fodder da rsync ile giriş yapmanız gerekecek. Aslında, tüm yöntemlerle tekrar giriş yapmanız gerekecektir . Aslında, ssh ile en az bir seferde birden fazla komutları yürütebilirsiniz: ssh you@host bash -c "command1;command2;command3; commandN".
terdon

@terdon Bu iyi bir nokta ve teşekkürler nicley çalışıyor :)
code_fodder

4

Rsync, tüm yolu / ağacı kopyalar ve zaten hedefte olan dosyaları kontrol eder ve değişmediklerinde kopyalamayı zahmet etmeyecektir. --Delete seçeneğini kullanırsanız, hedefte artık kaynakta olmayan tüm dosyaları siler. Ssh üzerinde çalışır


Birisi scp ile ilgili başka bir yazımda bahsettiğim gibi rsync ile uğraşıyordum. Benim yerel pc rsync yüklü ama uzak pc (gömülü bir birim) değil. Komutu kullanıyordum rsync -avz -e shh root@location:/path/to/dest /path/from/hostama parolayı söyledikten sonra başarısız oluyor sh: rsync: not found. Bu uzaktaki bilgisayarda rsync olması gerektiği anlamına mı geliyor? Teşekkürler!
code_fodder

1
@code_fodder evet, ne yapacağını söylemek için uzak sistemde çalışan bir programa ihtiyaç duyar. Düz bir kopya programı değil
Kanadalı Luke

@CanadianLuke ... lanet olsun :(
code_fodder

@code_fodder sadece yükleyin! Daha yararlı o zaman değil
Kanadalı Luke

Gömülü çözüme bağlı olarak rsync, herhangi bir kolaylık derecesinde mevcut olabilir veya olmayabilir ... gömülü çözüme bağlı olarak söylediğim gibi çok yaygın bir dengesizliktir. Not: Rsync'in sürekli çalışması gerekmez, ancak isteğe bağlı olarak sunulması gerekir.
jerm

3

Uzak SSH sunucunuz SFTP alt sistemini destekliyorsa (çoğu, açıkça devre dışı bırakılmadığı sürece), uzak sunucudaki dosyaları ve dizinleri değiştirmek için sftpkabuğu (veya başka bir SFTP istemcisini ) kullanabilirsiniz.

Ne yazık ki, temel bir şey sftpkabuk görünüşte gelmez değil işlemek ardışık dizin alınmasıdır; bir dizini silmek için önce tüm içeriğini silmeniz gerekir. Yine de diğer çoğu istemci (özellikle grafik olan) bunu destekliyor.

(Yerel işletim sisteminizin ne olduğunu söylemezsiniz, ancak Linux ise, yerel dosya yöneticinizi sftp: // user @ host / path / gibi bir URL'ye yönlendirerek GUI SFTP istemcisi olarak kullanabilirsiniz . Windows için WinSCP iyi bir istemcidir ve FileZilla iyi bir platformlar arası çözümdür.)


1

Uzak (/ local) bir dizini boşaltmak için rsync'i şu şekilde kullanın:

rsync -r --delete-excluded --exclude=* / server:/tmp/empty_this_dir/

Dikkatli olun - belirtilen hedefin altındaki her şeyi kaldırır !


Bunu denedim, ancak bir hata döndürüyor ve uzak dizini kaldırmıyor. exec talebi kanalı 0 rsync başarısız oldu: bağlantı beklenmedik kapalı (0 bayt kadar alınan) [gönderen] rsync hatası: açıklanamayan hatası (kod 255.) io.c de (235) [gönderen = 3.1.2]
xarlymg89

Uzak tarafta rsync'i başlatırken veya hatta ssh üzerinden bağlanırken bir sorun var gibi görünüyor. Deneyebilirsin ssh server rsync --versionveya ssh -v server rsync --versionsebep bulmak.
kardeş

Yanıtladığınız için teşekkürler, ancak sorunu çözmek için zarif değil, benzer sonuçlarla bir yol buldum. Tekrar yüzleşmem gerektiğine inandığım için tekrar deneyeceğim.
xarlymg89

0

Alternatif olarak, uzak dizini yerel bir dizine monte etmek, ardından dizini çıkarmak rm -r /path_to_directory_to_removeve son olarak dizini numaralandırmak hile yapar.

Orijinal yanıt burada: /programming//a/24650511/973919

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.