我目前可以访问 FTP 服务器,并将文件上传到该服务器。我想知道如何:
Automatically delete files on a specific folder on the FTP server which are x days old?
我对 Linux/Unix 还很陌生,我读过有人建议使用每晚运行的 Cronjob 来删除这些文件。我知道服务器正在运行 Linux 的一些变体。但是,我正在寻找更优雅的方法:
我目前不知道服务器上是否安装了 PHP 或 Perl 等,或者我是否能够安装它们。但如果有任何开源替代方案可以实现此目的:
1) Allow the user a web-based interface to upload files to the server 2) Allow another user to download the file from the same interface 3) The server automatically keeps track of the file from the date of upload and deletes files which are x days old
我很感激任何建议。我未能从最初的 Google 搜索中找到任何开源解决方案...
答案1
欢迎来到 Linux 世界。实际上,crontab 是一种非常优雅的做事方式,您应该遵循到目前为止得到的建议。这是 Linux 安排任务的方式。除非您想再次编写轮子,否则只需使用 crontab。
您正在寻找的命令是:
find /path/to/your/folder -mtime +[days old]
例如:
sysadmin@omg:~/sync/0434$ find . -mtime +180
./201305_10min.csv
./201308_10min.csv
./201307_10min.csv
./201303_10min.csv
./201312_10min.csv
./201301_10min.csv
./201311_10min.csv
./201302_10min.csv
./201306_10min.csv
./201304_10min.csv
./201211_10min.csv
./201401_10min.csv
./201309_10min.csv
./201212_10min.csv
./201310_10min.csv
这将显示所有超过 180 天的文件...
要删除这些文件我需要添加:
find . -mtime +180 | xargs rm
xargs 将把 find 返回的每一行作为参数传递给 rm
如果我执行了这个 cron,我将永远不会再被系统上超过 180 天的文件所困扰。
基于 Web 的界面本身就是一个完整的主题。您应该熟悉 HTML 表单、GET/POST 方法以与客户端通信,并使用可能的 PHP 方法 ftp_put 上传到您的服务器。
http://www.w3schools.com/html/html_forms.asp
http://php.net/manual/en/function.ftp-put.php
还请注意,将您的 Web 服务器指向您的 ftp 目录将列出其内容(文件),只需单击即可下载,因此您无需自己编写 Web 界面。例如,尝试:
sudo apt-get install apache2
sudo rm /var/www/index.html
sudo cp -r /tmp/* /var/www
sudo chown -R www-data:www-data /var/www
在浏览器中输入服务器的地址:
http://your-server-IP
您应该会看到与您的要求类似的内容:2)允许其他用户从同一界面下载文件
我希望您觉得这篇文章有用,并且是 Linux 的入门指南。除了用于上传文件的 Web 界面(这纯粹是 Web 设计,而不是 Linux 问题)之外,在评论中提出任何让您感到困惑的问题。我会尽力为您解释清楚。但请至少了解您使用的是哪个发行版,而不是“Linux 的某些变体”。