我一直在尝试更新备份脚本,以使其将数据保存在远程服务器上而不是本地磁盘上。
我已成功转换了整个脚本,但最后一部分却删除了目录中除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部分不会删除文件。
您需要将远程命令括在引号中,以在远程服务器上执行所有命令,否则,在管道之后在本地主机上运行所有命令,这不是您想要的(如注释中所述):
foo=`ssh $remoteuser@$remoteaddr "ls -tr1 /mnt/backup1tb/testarossa/test | tail -n +5 | xargs -d '\n' rm -f"`
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句