使用 SCP/SFTP 删除远程服务器上超过 X 天的文件

Mik*_*ike 9 files sftp scp deleting

有谁知道使用 SCP/SFTP 删除远程服务器上超过 X 天的文件的好方法吗?当然,我可以在 perl 等上编写一些脚本,但我觉得这太过分了。
任何UNIX方式?
单线?
单独的实用程序?

谢谢

PS 任务是删除一些过时的备份文件。

dan*_*ree 7

当然,我可以在 perl 等上编写一些脚本,但这太过分了。

您不需要脚本来实现预期效果 - 如果您具有 shell 访问权限来发送命令,则单行即可:

ssh user@host 'find /path/to/old_backups/* -mtime +7 -exec rm {} \;'
Run Code Online (Sandbox Code Playgroud)

-mtime +7 匹配一周前从今天午夜开始创建的文件。


小智 5

这个问题很老了,但我仍然想添加我的 bash only 解决方案,因为我来这里时只是在寻找一个。列出命令中的grep tar只是为了我自己的目的,只列出tar文件,当然可以改编。

RESULT=`echo "ls -t path/to/old_backups/" | sftp -i ~/.ssh/your_ssh_key user@server.de | grep tar`

i=0
max=7
while read -r line; do
    (( i++ ))
    if (( i > max )); then
        echo "DELETE $i...$line"
        echo "rm $line" | sftp -i ~/.ssh/your_ssh_key user@server.de
    fi
done <<< "$RESULT"
Run Code Online (Sandbox Code Playgroud)

这将删除给定目录中的所有 tar 文件,但最后 7 个除外。虽然它没有考虑日期,但如果你每天只有一个备份就足够了。