所以我可以这样做:sftp user@server
这些是文件 https://gist.github.com/438a6b82aff3064a19c9
我需要删除超过 60 天的文件。
有什么方法可以实现自动化吗?
查找命令不起作用。通过通配符删除不起作用。
支持 Rsync。如何使用 rsync 实现?
答案1
作为上述更好选项的替代,您可以编写脚本(使用 lftp 或其他方式)使用通配符和本地日期替换来删除所有文件。
它非常丑陋,但是却有效:
对于 60 999 中的 i;执行 lftp sftp://user@host -c "rm /path/to/website_production_$(date -d "$i 天前" + %m-%d-%Y)*" 完成
您可能需要进行设置,这样就不必输入密码。
答案2
在系统上安装 sftp 文件夹,如果你使用的是 OS X,则可以使用 Transmit 来执行此操作,或者在 Linux(本例中为 Ubuntu)上,你可以使用本指南http://blog.damontimm.com/how-to-mount-a-sftp-folder-ssh-ftp-on-ubuntu-linux-using-sshfs-fuse/。
它们都使用 FuSE,所以我敢打赌,如果你查找的话,它在 Windows 中也能正常工作。但是一旦安装了它,你就应该能够使用系统上本机可以使用的任何命令。
答案3
Rsync 保护创建日期。因此,您可以将所有文件 rsync 到您的计算机。然后运行find
以选择超过 60 天的文件并删除它们。然后通过 rsync 将它们上传回来。或者只是在目标中删除它们。
编辑
对本地目录进行rsync测试的结果:
rsync -av input/ tmp/
find tmp/* -mtime +10 -exec rm {} \;
rsync --delete -av tmp/ input
此后,目录 ./input/ 中 10 天前修改的文件将被删除。这应该适用于通过 SFTP 进行的远程目录。