从远程服务器到本地服务器的Sftp文件

时间:2013-03-08 09:48:46

标签: linux shell sftp file-transfer

对不起,如果这是一个太简单的问题。但我是Java开发人员,不知道shell脚本。 我用谷歌搜索,但找不到我想要的东西。

我的要求

  1. 使用Sftp连接到远程服务器[基于pub / pri的身份验证 键。一个指向私钥文件的变量
  2. 使用传输文件 特定扩展名[.log]到本地服务器文件夹。变量设置 远程服务器路径和本地文件夹
  3. 重命名传输的文件 远程服务器
  4. 将所有传输的文件记录在.txt文件中
  5. 任何人都可以为我提供shell脚本吗?

    到目前为止,我提出了一些建议。 还有一些问题留在我身边;)

    export PRIVKEY=${private_key_path}
    export RMTHOST=user@remotehost
    export RMTDIR=/logs/*.log
    export LOCDIR=/downloaded/logs/
    export LOG=sucess.txt
    
    scp -i $PRIVKEY $RMTHOST:$RMTDIR $LOCDIR
    for i in 'ls -1 $LOCDIR/*.log'
    do
       echo $i >> $LOG
    done
    
    ssh $RMTHOST -c "for i in `ls -1 $RMTDIR; do mv /logs/$i /logs/$i.transferred; done"
    

2 个答案:

答案 0 :(得分:3)

这种做法怎么样?

  
      
  1. 使用Sftp [基于pub / pri密钥的身份验证]连接到远程服务器。一个指向私钥文件的变量
  2.   
  3. 将具有特定扩展名[.log]的文件传输到本地服务器文件夹。变量以设置远程服务器路径和本地文件夹
  4.   
scp your_user@server:/dir/of/file/*.log /your/local/dir
  
      
  1. 将所有传输的文件记录在.txt文件中
  2.   
for file in /your/local/dir/*.log
do
   echo "$file" >> $your_txt
done
  
      
  1. 重命名远程服务器中的传输文件
  2.   
ssh your_user@server -c "for file in /dir/of/file/*.log; do mv /dir/of/file/"$file" /dir/of/file/new_name_based_on"$file"; done"

答案 1 :(得分:1)

使用scp(安全复制)命令传输文件。您可能还想添加压缩文件的-C开关。这可以加快速度。即将file1从server1复制到server2,

在server1上:

#!/bin/sh
scp -C /home/user/file1 root@server2.com:/home/user 

修改

#!/bin/sh
scp -i {path/to/pub/pri/key/file} /home/user/file1 root@server2.com:/home/user