scpファイルとリモートディレクトリ上のファイルの削除[終了]


18

私はUNIX初心者なので、しばらくお待ちください:-)

別のサーバーに大量のファイルをscpsするスクリプトがあります。

それらがz1.foo、z2.fooなどであると仮定します。私がやりたいのは、宛先サーバーでファイルをscpし、5日より古いファイルを削除することです。

宛先からファイルを安全に削除するにはどうすればよいですか?

ありがとう。


「宛先のファイルを上書きしますか?」リモートディレクトリに既に存在するファイルをscpする場合、それらは自動的に上書きされます
亜紀14

シェルスクリプトを使用してファイルをローカルで削除することをお勧めします。つまり、いつでもファイルをSCPしていることを意味します。:しかし、あなたはfiles.commandのようなものだろう保つ特定のフォルダの下のファイルを削除するために、日常的に実行するシェルスクリプトがあるfind /path/to/files* -mtime +5 -exec rm {} \;
Zareh Kasparian

回答:


21

非対話形式でファイルを削除するには:

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

1
ホスト名とは何ですか?それはservername@ipaddress:path/to/dir/
-HattrickNZ

1
ホスト名は単にuser:password@ipaddressまたはuser:password@dnsname、不要な場合はパスワードを省略できます。私はちょうどそれを試してみましたroot@somednsname、それはうまく動作します。path/to/dir私は、絶対パスとして、rmコマンドに入れ部分は、それが正しいことを確認します。
AsGoodAsItGets

6

--deleteフラグを使用して、同じコマンドで両方のタスクを実行でき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

この--deleteオプションは、ソースに存在しないファイルを宛先ディレクトリから削除します。ファイルをいつ削除するか、および除外されたファイルをどのように処理するかについて、いくつかの選択肢があります。

> 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

manページには、次の警告も含まれています。

このオプションは、誤って使用すると危険な場合があります!最初に--dry-run option-n)を使用して実行し、削除されるファイルを確認して、重要なファイルがリストされていないことを確認することをお勧めします。


2

ユーザー名とポート番号を設定する場合は、次を実行できます。

ssh root@203.0.113.123 -p22 "rm -rf /home/amzad/test.php"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.