监视文件然后复制到另一个目录

时间:2016-03-01 22:36:59

标签: shell unix ubuntu file-copying

我对unix脚本比较陌生,所以对新手问题表示道歉。

我需要创建一个永久在后台运行的脚本,并监视文件到达FTP登录目录,然后将其复制到另一个目录,最后从原始目录中删除该文件。

脚本在Ubuntu框上运行。

目标目录是/ home / vpntest

该文件需要复制为/ etc / ppp / chap-secrets

到目前为止,我已经有了这个

#/home/vpntest/FTP_file_copy.sh
if [ -f vvpn_azure.txt ]; then
cp vvpn_azure.txt /etc/ppp/chap-secrets
rm vvpn_azure.txt
fi

我可以以root身份运行它,它可以正常工作,但只能作为一个关闭(我需要它在后台永久运行,并在每次在着陆区接收到新文件时触发。)

如果我不以root用户身份运行,我会遇到权限问题(即使我在目录/ home / vpntest中运行它。)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

已更新: crontab更正和额外信息

使用root权限在后台进行检查和移动过程的一种方法是使用root用户的crontab和脚本完成“轮询”方法。

步骤:

  1. 修改/home/vpntest/FTP_file_copy.sh:
  2. #!/bin/bash
    
    new_file=/home/vpntest/vvpn_azure.txt
    
    if [ -f "$new_file" ]; then
        mv $new_file /etc/ppp/chap-secrets
    fi
    
    1. 退出。以root用户身份登录。

    2. 添加一个cron任务来运行脚本:

      crontab -e

    3. 如果这是一台新机器,并且您第一次运行crontab,您可能会首先选择crontab的编辑器,只需选择并继续进入编辑器。

      格式为m h dom mon dow command,因此如果每隔5分钟检查一次,请执行以下操作:

      */5 * * * * /home/vpntest/FTP_file_copy.sh
      
      1. 保存并关闭以应用。
      2. 现在它将在后台每隔5分钟自动运行脚本,帮助您移动文件(如果找到)。

        说明

        root用户,因为你提到它只能以root身份为你工作。

        因此我们在root用户的crontab中设置它以获得足够的权限。

        man 5 crontab告知我们:

          

        星号后也允许步骤,所以如果你想说   '每两个小时',只需使用'* / 2'。

        因此我们在第一列写了*/5,这是分钟列, 设置为“每5分钟”。

        FTP_file_copy.sh:

        • 使用绝对路径,可以从任何地方运行
        • 重新安排,以便可以重复使用一个变量new_file
        • [ ]测试
        • 中附上正在检查的所有值的良好做法
        • 使用mv在从源目录
        • 中删除目标时写入目标