删除超过 7 天的 FTP 数据的脚本

删除超过 7 天的 FTP 数据的脚本

目前我正在使用以下简单的脚本将服务器目录备份到远程 FTP 位置

# Take backup to remote location
ncftpput -z -R -uusername -ppassword ftp.example.org /destination/directory /source/directory

现在,我只需要删除远程 FTP 中超过 7 天的备份。在服务器内的正常目录位置,我只需使用以下简单脚本即可完成此操作

# Delete backups older than 7 days
find /backup -name '*' -type d -mtime +6 -exec rm -rfv "{}" \;

但是,在 FTP 上运行相同的程序不起作用,有什么方法可以删除超过 7 天的 FTP 远程位置数据吗?可以通过 lftp 或任何其他命令

答案1

有一个名为 curlftpfs 的 FUSE 文件系统,它允许您像普通文件系统一样挂载远程 FTP 站点,从而允许您运行 find 命令删除超过 7 天的文件。首先通过运行apt-get install curlftpfsyum install curlftpfs或适用于您的发行版的等效命令来安装该软件包。

安装完成后,您可以像这样挂载远程 ftp 站点:

mkdir /tmp/ftp_mount
curlftpfs -o user=username:password ftp.example.org /tmp/ftp_mount

其中用户名和密码将替换为您的实际用户名和密码。现在只需进入 /tmp/ftp_mount 并运行 find 命令即可删除旧文件。完成后,退出文件系统并使用以下命令卸载它:

fusermount -u /tmp/ftp_mount

由于 curlftpfs 是一个 FUSE 文件系统,您可以以任何用户身份执行此操作(不需要 root 身份即可运行)。

答案2

似乎没有简单的方法可以仅使用 FTP 访问来做您想做的事情。以下是一些可能有用的想法:

  • 如果适用,请按日期组织/重命名目录。这样,您就会知道要删除的目录名称。
  • 在本地机器上保留相同目录/文件的精确副本。在本地机器上应用 find 以获取要删除的文件列表,然后遍历所有文件以通过 FTP 将其删除。
  • 遍历目录结构以查找修改时间并决定是否删除该文件/文件夹。

相关内容