拜托,我很抱歉打扰你的问题,但我有两个问题,我希望得到专家的意见。
问题:1
我们有两个基于linux的服务器接收来自用户的传入文件,另一个服务器我们将这些文件存储在其中我想知道有没有办法自动化文件传输,让我在这里解释一下。
我想知道,一旦用户上传文件,文件是否可以传输到我们的资产服务器,之后应该从服务器删除它。
是否有任何方法可以建议我使用我是Linux新手,但我有编程背景,但我正在思考bash但不知道如何去做。
问题2:
是否可以创建一个bash来自动从在线服务器安装文件。
谢谢你的帮助,我们将不胜感激。
答案 0 :(得分:1)
我会给出一个普遍的答案。
您可以在上传时触发脚本,或者如果由于某种原因无法触发,则Linux会有一些notify
API,命令可以使用这些API来watch
目录。
完成后,您需要传输文件。同样,这样做的方法不止一种,但有些可能性是scp
,sftp
或HTTP POST(可能使用curl
)。如果使用scp
/ sftp
,则应使用基于密钥的身份验证而不是密码。
如果(并且只有我假设)成功运行,您可能希望删除该文件(如果没有,也许您可以使用mail
命令向某人投诉和/或使用mv
命令将问题文件移动到另一个目录中。)
如果您想使用bash自动执行其中一些操作,那么您应该查看以下一些bash功能:
&&
将执行以下命令。||
将执行以下命令
if then fi
while do done
最后,在我的系统上,以下命令显示了一些您可能想要查看的工具:
apt-cache search inotify
-
incron - cron-like daemon which handles filesystem events
inosync - notification-based directory synchronization daemon
inoticoming - trigger actions when files hit an incoming directory
inotify-hookable - blocking command-line interface to inotify
inotify-tools - command-line programs providing a simple interface to inotify
gamin - File and directory monitoring system
clsync - live sync tool based on inotify, written in GNU C
entr - Run arbitrary commands when files change
lsyncd - daemon to synchronize local directories using rsync
iwatch - realtime filesystem monitoring program using inotify
......其中一个可能就是你需要的所有东西......
答案 1 :(得分:0)
这两个问题的经典解决方案是bash脚本和crontab
。
bash脚本会自动执行文件传输,而crontab会在你喜欢的时候安排它。
#!/bin/bash
scp -r /path/to/upload_files user@destination_IP:/path/to/upload/files
以设置cronjob:
crontab -e