Apakah ada perintah lain seperti scp tetapi untuk menghapus file dan folder?

13

Saya menggunakan scp untuk menyalin barang ke lokasi yang jauh. Tapi kadang-kadang scp tidak berfungsi seperti yang diharapkan, saya menemukan bahwa kadang-kadang salinan tidak lengkap dengan benar (mungkin ketika saya telah menambahkan file baru ke folder yang saya salin).

Jadi saya ingin menghapus folder jauh terlebih dahulu dan kemudian melakukan copy untuk memastikan bahwa saya memiliki apa yang saya butuhkan.

Apakah ada perintah lain seperti scp (mis. Srm atau smv)? Atau adakah cara untuk menghapus folder dan file jarak jauh?

code_fodder
sumber

Jawaban:

19

The sshperintah akan memungkinkan Anda untuk menjalankan cukup banyak setiap perintah pada remote host, misalnya,

ssh yourlogin@remotehost rmdir somedir

di mana dalam contoh ini somediradalah relatif ke direktori home dari login Anda.

garyjohn
sumber
Terima kasih untuk itu. Satu-satunya masalah yang saya miliki dengan metode ini adalah bahwa setiap kali Anda menyebutnya Anda harus "login" lagi :(. Karena target saya tertanam saya tidak dapat menggunakan kunci ssh karena semuanya menjadi over-tertulis, jadi saya mencoba untuk lakukan ini dalam satu perintah. rsync terlihat menjanjikan. Tapi, +1 karena ini menjawab pertanyaan :))
code_fodder
5
@code_fodder Anda harus masuk dengan rsync juga. Bahkan, Anda harus masuk lagi dengan semua metode. Bahkan, dengan ssh Anda setidaknya dapat menjalankan beberapa perintah dalam satu pergi: ssh you@host bash -c "command1;command2;command3; commandN".
terdon
@terdon Ini adalah poin yang bagus dan bekerja dengan baik, terima kasih :)
code_fodder
4

Rsync akan menyalin seluruh path / tree dan memeriksa file yang sudah ada di tempat tujuan dan tidak repot-repot menyalinnya jika tidak diubah. Jika Anda menggunakan opsi --delete, itu akan menghapus semua file yang ada di tujuan yang tidak lagi di sumbernya. Ia bekerja lebih dari ssh

jerm
sumber
Saya bermain-main dengan rsync, ketika seseorang menyebutkan ini di postingan saya yang lain tentang scp. Saya telah menginstal rsync pada pc lokal saya tetapi tidak pada pc jarak jauh (unit tertanam). Saya menggunakan perintah rsync -avz -e shh root@location:/path/to/dest /path/from/hostTapi gagal setelah saya memasukkan kata sandi sh: rsync: not found. Apakah itu berarti rsync harus ada pada remote pc? Terima kasih!
code_fodder
1
@ code_fodder ya, perlu program yang berjalan pada sistem jarak jauh untuk mengatakan apa yang harus dilakukan. Ini bukan program salinan langsung
Kanada Luke
@CanadianLuke ... sialan :(
code_fodder
@code_fodder cukup instal! Lebih berguna daripada tidak
Kanada Luke
Tergantung pada solusi yang tertanam rsync mungkin tersedia atau tidak dengan tingkat yang mudah ... meskipun itu adalah ketidakstabilan yang sangat umum seperti yang saya katakan, tergantung pada solusi yang tertanam. Catatan: Rsync tidak harus berjalan sepanjang waktu, tetapi harus ada agar berjalan sesuai permintaan.
jerm
3

Jika server SSH jauh Anda mendukung subsistem SFTP (kebanyakan melakukannya, kecuali jika dinonaktifkan secara eksplisit), Anda dapat menggunakan sftpshell (atau klien SFTP lainnya ) untuk memanipulasi file dan direktori pada server jauh.

Sayangnya, satu hal yang tidak ditangani oleh sftpshell dasar adalah penghapusan direktori rekursif; untuk menghapus direktori, Anda harus menghapus semua isinya terlebih dahulu. Sebagian besar klien lain (terutama yang grafis) biasanya mendukungnya.

(Anda tidak menyebutkan apa OS lokal Anda, tetapi jika itu Linux, Anda dapat menggunakan file manager asli Anda sebagai klien GUI SFTP dengan mengarahkannya ke URL seperti sftp: // user @ host / path /. Untuk Windows, WinSCP adalah klien yang layak, dan FileZilla adalah solusi lintas platform yang baik.)

Ilmari Karonen
sumber
1

Untuk mengosongkan direktori jarak jauh (/ lokal), gunakan rsync seperti ini:

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

Hati-hati - ini menghapus semua yang ada di bawah tujuan yang ditentukan!

kawan
sumber
Saya sudah mencoba ini, tetapi ia mengembalikan kesalahan dan tidak menghapus direktori jarak jauh. permintaan exec gagal pada saluran 0 rsync: koneksi tiba-tiba ditutup (0 byte diterima sejauh ini) [pengirim] kesalahan rsync: kesalahan yang tidak dapat dijelaskan (kode 255) di io.c (235) [pengirim = 3.1.2]
xarlymg89
Sepertinya ada masalah mulai rsync di sisi jarak jauh atau bahkan menghubungkan melalui ssh. Anda dapat mencoba ssh server rsync --versionatau ssh -v server rsync --versionmenemukan alasannya.
bro
Terima kasih telah menjawab, namun saya menemukan cara untuk menyelesaikan masalah, bukan sebagai elegan tetapi dengan hasil yang serupa. Akan mencoba lagi karena saya percaya saya harus menghadapinya lagi.
xarlymg89
0

Sebagai alternatif, memasang direktori jarak jauh di direktori lokal, kemudian menghapusnya dengan rm -r /path_to_directory_to_removedan akhirnya membuat direktori umount berhasil.

Jawaban asli di sini: /programming//a/24650511/973919

xarlymg89
sumber