Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to move uploaded file to another server using scp. following is the script i am using and error;


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

        if [ -f /var/www/upload/* ];
                    scp -P 88 * user@
        echo "$now-S1:succesful." >> /var/log/mv_to.log
            echo "$now-S1:Error!!" >> /var/log/mv_to.log


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

If there is only one file it works fine and if there are two or more files it says unexpected operator. Please correct me here.

share|improve this question
Isn't rsync a better option than scp? Your script wants to copy every file in the directory. If you don't remove files from upload after they've been copied, you'll re-copy them when you run your script next. Also, rysnc comes with a log file. – Chris Ting May 25 '11 at 15:27
up vote 1 down vote accepted

The problem is with your if statement. You can replace it with:

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

(instead of checking that a file exists, which gives an error if there's more than one file, it checks that the directory exists)

share|improve this answer
But I also need to log if file doesn't exist?? – Himalay May 25 '11 at 15:12
Unless he plans on creating and deleting the directory over and over, isn't it better that he not include the if statement? – Chris Ting May 25 '11 at 15:19
To check that at least some files exist in the upload directory, use: if [ "$(ls -A /var/www/upload/)" ]; – timginn May 25 '11 at 15:25

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.