scpのようなファイルやフォルダーを削除するための他のコマンドはありますか?


13

scpを使用して、リモートの場所にコピーします。ただし、scpが期待どおりに動作しない場合があります。コピーが適切に完了しない場合があります(コピーしているフォルダーに新しいファイルを追加した場合など)。

そのため、まずリモートフォルダーを削除してからコピーを実行し、必要なものが正確にあることを確認します。

scpなどの他のコマンド(srmやsmvなど)はありますか?または、リモートのフォルダーとファイルを削除する方法はありますか?

回答:


19

このsshコマンドを使用すると、リモートホストでほとんどすべてのコマンドを実行できます。たとえば、

ssh yourlogin@remotehost rmdir somedir

この例でsomedirは、yourloginのホームディレクトリに関連しています。


ありがとう。私がこのメソッドで持っている唯一の問題は、呼び出すたびにもう一度「ログイン」する必要があるということです: 1つのコマンドでこれを実行します
。rsync

5
@code_fodderもrsyncでログインする必要があります。実際、すべての方法で再度ログインする必要があります。実際、sshを使用すると、少なくとも複数のコマンドを一度に実行できますssh you@host bash -c "command1;command2;command3; commandN"
テルドン

@terdonこれは良い点であり、nicleyに感謝します:)
code_fodder

4

Rsyncは、パス/ツリー全体をコピーし、宛先に既にあるファイルをチェックします。ファイルが変更されていない場合、それらをコピーすることはありません。--deleteオプションを使用すると、ソースに存在しない宛先にあるすべてのファイルが削除されます。sshで動作します


scpに関する私の別の投稿で誰かがこれについて言及したように、私はrsyncをいじっていました。ローカルPCにrsyncをインストールしていますが、リモートpc(組み込みユニット)にはインストールしていません。私はコマンドを使用してrsync -avz -e shh root@location:/path/to/dest /path/from/hostいましたが、パスワードを入力してから失敗しましたsh: rsync: not found。それはrsyncがリモートPC上に存在しなければならないということですか?ありがとう!
code_fodder

1
@code_fodderはい、何をすべきかを伝えるためにリモートシステムで実行されているプログラムが必要です。単純なコピープログラムではありません
カナダルーク

@CanadianLuke ...いまいましい:(
code_fodder

@code_fodderをインストールするだけです!それよりも有用ではない
カナダのルーク

組み込みソリューションに応じて、rsyncはある程度簡単に利用できる場合とできない場合がありますが、組み込みソリューションに応じて、先ほど述べたように非常に一般的な期限です。注:Rsyncは常に実行している必要はありませんが、オンデマンドで実行するために存在する必要があります。
2013年

3

リモートSSHサーバーがSFTPサブシステムをサポートしている場合(明示的に無効にされていない限り、ほとんどがサポートしています)、sftpシェル(または他のSFTPクライアント)を使用して、リモートサーバー上のファイルとディレクトリを操作できます。

残念ながら、基本的なsftpシェルが明らかに処理しない 1つのことは、再帰的なディレクトリの削除です。ディレクトリを削除するには、最初にその内容をすべて削除する必要があります。ただし、他のほとんどのクライアント(特にグラフィカルクライアント)は、通常はサポートしています。

(ローカルOSについては言及しませんが、Linuxの場合、ネイティブファイルマネージャーを sftp:// user @ host / path /のようなURLで指すことにより、GUI SFTPクライアントとして使用できます。Windowsの場合、WinSCP適切なクライアントであり、FileZillaは優れたクロスプラットフォームソリューションです。)


1

リモート(/ local)ディレクトリを空にするには、次のようにrsyncを使用します。

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

注意してください- 指定された宛先の下のすべてを削除ます!


私はこれを試しましたが、エラーを返し、リモートディレクトリを削除しません。EXEC要求は、チャネル0のrsyncに失敗しました:接続が予期せず閉じられ(0バイトがこれまでに受信した)[送信元] rsyncのエラー:原因不明のエラーio.cで(符号255)(235)、送信者= 3.1.2]
xarlymg89

リモート側でrsyncを起動したり、ssh経由で接続したりするのに問題があるようです。試してみるssh server rsync --versionssh -v server rsync --version、理由を見つけることができます。
仲間

答えてくれてありがとう、しかし、私は問題を解決する方法を見つけました。エレガントではなく、同様の結果が得られました。私は再びそれに直面しなければならないと信じているので、もう一度やります。
xarlymg89

0

別の方法として、ローカルディレクトリにリモートディレクトリをマウントしてから、それを削除しrm -r /path_to_directory_to_remove、最後にディレクトリをアンマウントすることでうまくいきます。

元の答えはこちら:https : //stackoverflow.com/a/24650511/973919

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