データがローカルディスクではなくリモートサーバーに保存されるようにバックアップスクリプトを更新しようとしました。
スクリプト全体を正常に変換しましたが、最後の部分では、n
ディレクトリから最新のファイルを除くすべてのファイルを削除しました。
デバッグして理由を調べるために、一時的にすべての変数を削除しました。
リモートコンピュータで実行したいコマンドは次のとおりです。
ls -tr1 /mnt/backup1tb/testarossa/test | tail -n +5 | xargs -d '\n' rm -f
このコマンドを実行すると、期待どおりに機能します。最新の4つのファイル(またはディレクトリ)を残し、残りを削除します。
SSH経由で実行するには、スクリプトに次の行があります。
foo=`ssh $remoteuser@$remoteaddr ls -tr1 /mnt/backup1tb/testarossa/test | tail -n +5 | xargs -d '\n' rm -f`
最後の部分を削除しようとしましたが、| xargs -d '\n' rm -f
削除する必要があるファイルのディレクトリのリストが返されました。ただし、xarg セクションを追加しても、これらのファイルは削除されません。
ベストアンサー1
リモートサーバーですべてのコマンドを実行するには、リモートコマンドを引用符で囲む必要があります。それ以外の場合は、localhostのパイプに続くすべてのエントリを実行します。これはユーザーが望むものではありません(コメントで述べたように)。
foo=`ssh $remoteuser@$remoteaddr "ls -tr1 /mnt/backup1tb/testarossa/test | tail -n +5 | xargs -d '\n' rm -f"`