如何删除不支持 SSH 的服务器上的文件。仅支持 sFTP

如何删除不支持 SSH 的服务器上的文件。仅支持 sFTP

所以我可以这样做: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 进行的远程目录。

相关内容