如何使用scp将文件从一台服务器移动到另一台服务器?


0

我正在尝试使用scp将上传的文件移动到另一台服务器。以下是我正在使用的脚本和错误;

“mv.sh”

#!/bin/sh
now=$(date +"%y-%m-%d-%M")
    cd /var/www/upload

        if [ -f /var/www/upload/* ];
        then
                    scp -P 88 * user@192.168.2.1:backup/
        STATUS=$?
        echo "$now-S1:succesful." >> /var/log/mv_to.log
        else
            echo "$now-S1:Error!!" >> /var/log/mv_to.log
    fi

错误;

[: 13: /var/www/upload/1.doc: unexpected operator

如果只有一个文件它可以正常工作,如果有两个或更多文件,它会说出意外的操作符。请在这里纠正我。


rsync不是比scp更好的选择吗?您的脚本想要复制目录中的每个文件。如果您在复制后没有从上传中删除文件,则在下次运行脚本时将重新复制它们。此外,rysnc附带一个日志文件。
Chris Ting

Answers:


1

问题在于你的if语句。您可以将其替换为:

    if [ -d /var/www/upload/ ];

(而不是检查文件是否存在,如果有多个文件则会出错,它会检查该目录是否存在)


但我还需要记录文件是否不存在?
Himalay

除非他计划一遍又一遍地创建和删除目录,否则他不包括if语句会更好吗?
Chris Ting

1
要检查上载目录中是否存在至少一些文件,请使用: if [ "$(ls -A /var/www/upload/)" ];
timginn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.