2013-03-08 280 views
1

对不起,如果它太简单的问题。但我是Java开发人员,不知道shell脚本。 我用Google搜索,但无法找到我正在寻找什么。从远程服务器到本地服务器的Sftp文件

我要求

  1. 连接到使用SFTP [认证基于发布/ PRI 键]远程服务器。指向私钥文件的变量
  2. 将带有 特定扩展名[.log]的文件传输到本地服务器文件夹。变量设置 远程服务器的路径和本地文件夹
  3. 重命名转移文件中 远程服务器
  4. 登录的所有传输文件.txt文件

任何一个可以给我的shell脚本此?

这是迄今为止我陷害的建议。 还有一些问题留在我身边;)

export PRIVKEY=${private_key_path} 
export [email protected] 
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" 

回答

1

这个怎么样的做法?

  1. 连接到使用SFTP [认证基于发布/ PRI键]远程服务器。指向私钥文件的变量
  2. 将具有特定扩展名[.log]的文件传输到本地服务器文件夹。变量设置远程服务器的路径和本地文件夹
scp [email protected]:/dir/of/file/*.log /your/local/dir 
  1. 登录的所有传输文件.txt文件
for i in `ls -1 /your/local/dir/*.log` 
do 
    echo $i >> $your_txt 
done 
  1. 重命名该在远程服务器
ssh [email protected] -c "for i in `ls -1 /dir/of/file/*.log; do mv /dir/of/file/$i /dir/of/file/new_name_based_on$i; done" 
+0

您能否将其附加/编写为完整的脚本文件?除了ls和chmod [基本命令],不知道linux脚本 – Reddy 2013-03-08 10:07:50

+0

如果任何文件传输失败,for条件怎么知道它? – Reddy 2013-03-08 10:08:55

+0

关于脚本文件,这将是一个加入我指出的部分的问题。请先尝试一下,然后再回答具体问题。 – fedorqui 2013-03-08 10:27:40

1

使用SCP(安全复制)命令来传输文件。您可能还想添加压缩文件的-C开关。这可以加快一点。即在Server1到Server2复制文件1,

在server1上:

 
#!/bin/sh 
scp -C /home/user/file1 [email protected]:/home/user 

编辑:

 
#!/bin/sh 
scp -i {path/to/pub/pri/key/file} /home/user/file1 [email protected]:/home/user 
+0

传输的文件是开放的,我没有关于shell脚本的想法。在作为Java开发者的当前项目中,我有这种情况并寻求帮助:) – Reddy 2013-03-08 10:06:42

+0

这个'scp -C/home/user/file1 root @ server2。com:/ home/user'是您必须在shell控制台中输入的命令,才能将文件安全地传输到远程服务器。由于'scp'基于SSH,您需要验证自己。 – KiaMorot 2013-03-08 10:11:04

+0

正确,需要验证。 – Tsimtsum 2013-03-08 10:29:36

相关问题