对不起,如果这是一个太简单的问题。但我是Java开发人员,不知道shell脚本。 我用谷歌搜索,但找不到我想要的东西。
我的要求
任何人都可以为我提供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"
答案 0 :(得分:3)
这种做法怎么样?
- 使用Sftp [基于pub / pri密钥的身份验证]连接到远程服务器。一个指向私钥文件的变量
- 将具有特定扩展名[.log]的文件传输到本地服务器文件夹。变量以设置远程服务器路径和本地文件夹
醇>
scp your_user@server:/dir/of/file/*.log /your/local/dir
- 将所有传输的文件记录在.txt文件中
醇>
for file in /your/local/dir/*.log
do
echo "$file" >> $your_txt
done
- 重命名远程服务器中的传输文件
醇>
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