file scp dan menghapus file pada direktori jarak jauh [ditutup]


18

Saya seorang noix noob, jadi harap bersabar :-)

Saya memiliki skrip yang memindai banyak file ke server lain.

Misalkan mereka adalah z1.foo, z2.foo dll. Yang ingin saya lakukan adalah untuk scp file dan menghapus file yang lebih lama dari 5 hari di server tujuan.

Bagaimana cara saya menghapus file dengan aman dari tujuan?

Terima kasih.


"menimpa file di tujuan"? Jika Anda scp file yang sudah ada pada dir jauh mereka akan ditimpa secara otomatis
Aki

ide yang bagus, untuk menghapus file dengan skrip shell secara lokal. Berarti Anda adalah file SCPing kapan pun Anda mau. tetapi ada skrip shell yang berjalan setiap hari untuk menghapus file di bawah folder tertentu, di mana Anda menyimpan files.command akan menjadi sesuatu seperti:find /path/to/files* -mtime +5 -exec rm {} \;
Zareh Kasparian

Jawaban:


21

Untuk menghapus file secara non-interaktif:

ssh hostname "rm -f z100.foo z200.foo"

1
apa nama host? itu servername@ipaddress:path/to/dir/?
HattrickNZ

1
nama host hanya user:password@ipaddressatau user:password@dnsnameAnda dapat menghilangkan kata sandi jika tidak diperlukan. Saya baru saja mencobanya root@somednsnamedan berfungsi dengan baik. Bagian yang path/to/dirsaya masukkan dalam perintah rm, sebagai jalur absolut, untuk memastikan itu benar.
AsGoodAsItGets

6

Anda bisa menyelesaikan kedua tugas dalam perintah yang sama dengan menggunakan --deleteflag untuk rsync.

> ls -1 localdir/
a.foo
b.foo

> ssh remote-host "ls -1 remotedir/"
c.foo

> rsync -a --delete localdir/ remote-host:remotedir/

> ssh remote-host "ls -1 remotedir/"
a.foo
b.foo

The --deletepilihan menghapus file dari direktori tujuan yang tidak ada pada sumber. Ada beberapa pilihan tentang kapan file dihapus dan bagaimana menangani file yang dikecualikan.

> man rysnc
...
--delete                delete extraneous files from dest dirs
--delete-before         receiver deletes before transfer (default)
--delete-during         receiver deletes during xfer, not before
--delete-after          receiver deletes after transfer, not before
--delete-excluded       also delete excluded files from dest dirs

Halaman manual juga berisi peringatan ini:

Opsi ini bisa berbahaya jika digunakan secara tidak benar! Ini adalah ide yang sangat bagus untuk dijalankan terlebih dahulu menggunakan --dry-run option( -n) untuk melihat file apa yang akan dihapus untuk memastikan file penting tidak terdaftar.


2

Jika Anda ingin menetapkan nama pengguna dan nomor port, Anda dapat melakukan hal berikut:

ssh root@203.0.113.123 -p22 "rm -rf /home/amzad/test.php"
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.