2013-03-08 424 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

相關問題