我的目标:
使用ssh(公钥/私钥登录)连接到Debian计算机的cronjob(在MacOSX Snow Leopard上)的shellcript,执行tar
命令并随后下载tarred文件。
我的问题:
登录工作,也执行一些命令。但是如何将文件下载回本地计算机?
这是我到目前为止所拥有的:
到目前为止,这是shell脚本的内容:
#!/bin/bash
ssh user@remotehost << 'ENDSSH'
tar -C / -czf /home/user/stuff.tar.gz /home/user/stuff
ENDSSH
答案 0 :(得分:2)
简短而简单,不需要heredoc。
ssh -Te none user@remotehost "tar -C / -cz /home/user/stuff" >stuff.tar.gz
答案 1 :(得分:1)
将其传回去。
#!/bin/bash
ssh user@remotehost << 'ENDSSH' > stuff.tar.gz
tar -C / -czf - /home/user/stuff
ENDSSH
答案 2 :(得分:1)
这可能是你想要的。
scp stuff.tar.gz user@remotehost:/"directory to place this file"/
答案 3 :(得分:1)
创建文件后,只需rsync
:
#!/bin/bash
ssh user@remotehost tar -C / -czf /home/user/stuff.tar.gz /home/user/stuff
rsync -chavP --stats user@remotehost:/home/user/stuff.tar.gz .
此 启动与remotehost
的第二次连接,但是当文件自上次存档以来没有发生任何变化时,可以节省您在网络中复制数据的时间。
答案 4 :(得分:1)
为什么要下载tar文件而不在stdout上创建tar内容?
即:
ssh user@machine '(' cd /the/dir '&&' tar cf - list of files ')' >archive.tar
答案 5 :(得分:0)
予。如何通过SSH压缩文件或文件夹
对于不同的压缩格式,您需要使用不同的命令行:
将文件或文件夹压缩为zip文件:
zip -r file.zip file
将文件(仅限)压缩为bz2文件:
Bzip2 -zk file
将文件(仅限)压缩为gz文件:
gzip -c file > file.gz
顺便说一句,您需要将上面的“文件”更改为您要压缩的扩展名(如果有)的文件名,而您可以用以下任何关键字替换以下“xxx”:
将一个文件或文件夹压缩为tar文件:
tar -cvf xxx.tar file
将多个文件和/或文件夹压缩为tar文件:
tar -cvf xxx.tar file1 file2 folder1 folder2 ...
将一个文件或文件夹压缩为tar.bz2文件:
tar -cvjf xxx.tar.bz2 file
将多个文件和/或文件夹压缩为tar.bz2文件:
tar -cvjf xxx.tar.bz2 file1 file2 folder1 folder2 ...
将一个文件或文件夹压缩为tar.gz文件:
tar -cvzf xxx.tar.gz file
将多个文件和/或文件夹压缩为tar.gz文件:
tar -cvzf xxx.tar.gz file1 file2 folder1 folder2 ...
II。如何通过SSH提取文件
提取文件会更容易,因为您不必担心文件夹:
提取zip文件:
unzip file.zip
提取bz2文件:
bunzip2 file.bz2
提取gz文件:
gzip -d file.gz
提取tar文件:
tar -xvf file.tar
提取tar.bz2文件:
tar -xvjf file.tar.bz2
提取tar.gz文件:
tar -xvzf file.tar.gz
顺便说一下,你需要用真实的文件名替换压缩文件的上述“文件”。
加成:
除了远程服务器之外,上述命令行也可用于具有终端应用程序的Mac OS计算机。