Bssh自动化两个Linux服务器之间的文件传输

时间:2016-07-05 07:52:54

标签: linux bash

拜托,我很抱歉打扰你的问题,但我有两个问题,我希望得到专家的意见。

问题:1

我们有两个基于linux的服务器接收来自用户的传入文件,另一个服务器我们将这些文件存储在其中我想知道有没有办法自动化文件传输,让我在这里解释一下。

我想知道,一旦用户上传文件,文件是否可以传输到我们的资产服务器,之后应该从服务器删除它。

是否有任何方法可以建议我使用我是Linux新手,但我有编程背景,但我正在思考bash但不知道如何去做。

问题2:

是否可以创建一个bash来自动从在线服务器安装文件。

谢谢你的帮助,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

我会给出一个普遍的答案。

您可以在上传时触发脚本,或者如果由于某种原因无法触发,则Linux会有一些notify API,命令可以使用这些API来watch目录。

完成后,您需要传输文件。同样,这样做的方法不止一种,但有些可能性是scpsftp或HTTP POST(可能使用curl)。如果使用scp / sftp,则应使用基于密钥的身份验证而不是密码。

如果(并且只有我假设)成功运行,您可能希望删除该文件(如果没有,也许您可​​以使用mail命令向某人投诉和/或使用mv命令将问题文件移动到另一个目录中。)

如果您想使用bash自动执行其中一些操作,那么您应该查看以下一些bash功能:

    如果前面的命令成功(返回退出代码为0),
  • &&将执行以下命令。
  • 如果前面的命令失败(退出代码!= 0),
  • ||将执行以下命令
  • 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:

  1. 切换到所需的用户运行:crontab -e