我有一种情况,我想将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