実際に同期せずにサーバーリストからファイルを削除しますか?

実際に同期せずにサーバーリストからファイルを削除しますか?

rsyncサーバーにいくつかのスクリプトを送信したい状況があります。

rsync -arh --stats --files-from="${LIST}" "${SRC}/" "${HOST}":"${DST}/"

次の手順では、sshサーバーに移動していくつかのスクリプトを呼び出します。

ジョブの完了後にアップロードされたファイルのリストを削除したいと思います。

簡単に言えば、ディレクトリ構造に関連するいくつかのスクリプトがあり、他のファイルが含まれているので、それssh "${HOST}" rm -rf "${DST}/"は考えられません。${DST}

達成する方法はありますか?元に戻すrsync非常にクールなツールセットを使用しませんか?

答え1

< "$LIST" ssh $HOST xargs -i% rm "$DST/%"

単一の SSH セッションを使用します。

リストがファイルであり、ディレクトリがないと仮定すると、後者の選択を解除するのは面倒です。

編集:前のコメントを説明するには、質問に入力ファイルのサンプルが含まれていないことを考慮してこれを前提としてください。

入力ファイルが次の場合、私の答えはそれを処理できるはずです。

script1.sh
script2.sh
script3.sh

入力ファイルが次の場合:

script1.sh
script2.sh
somedir/

(IEでは完全目次コピー)これで、何を削除するかを知るのが難しいことがわかりましたsomedir/(私たちはsomedir/ローカルで列挙し、その情報を使ってクリーンアップする必要があります)。

答え2

すでにファイルのリストがあるので、最も簡単な方法(スクリプトが数個しかないと言われているので)は、同じファイル(例えばfile.list)を繰り返し削除することです。

次のように:

for r in "$(cat ${LIST})"
do
  ssh "${HOST}" rm "${DST}/$r"
done

関連情報