ssh结合tar命令把远程文件拉回来或推过去(实现数据无落地推送)

登录22后tar 压缩/var/log目录输出到标准输入通过管道传到本地22_log.tar.gz文件

ssh 192.168.0.22 "cd /var ;tar -zcvf - log"|cat >22_log.tar.gz

在提取存档文件时,会在相对位置重新创建文件。可以使用这种方法帮助同步目录。因为 tar 创建目录结构的字节流,可以通过结合使用 tar 和管道把文件从一个位置复制到另一个位置:$ tar cf - ./etc |( cd /backup; tar xf - )。“-” 指定 tar 应该使用标准输出(在写时)或标准输入(在读时)。圆括号让语句在一个子 shell 中执行。看一下管道符前面的代码,它创建文件的字节流并发送到标准输出。在管道符后面,切换到另一个目录,然后从标准输入提取字节流。

要想保留文件的所有者和权限,可以使用 p 选项保留每个文件和目录的元数据:$ tar cfp - ./etc |( cd /backup; tar xfp - )。

掌握这种基本结构之后,就可以执行更复杂的操作。例如,可以只复制在特定时间之后修改过的文件:$ tar cf - --newer 20090101 ./etc |(cd /backup; tar xf - )。这个命令创建在 2009 年 1 月 1 日之后修改过的文件的拷贝。

通过与 rsh 或 ssh 结合使用,还可以把文件同步到远程主机:$ tar cfp - ./etc |(ssh [email protected] -- tar xfp -)。按照这种方式使用 ssh 和 tar 是在远程主机上创建本地文件备份的好方法。但是,还有更高效的信息同步方法。(虽然tar结合 -P参数时可使用绝对路径,不过为了保险起见还是建议使用相对路径,先进行cd操作)

1、在A机压缩后,复制到B机器并解压缩
cd /opt ; tar -cf - datadir1 | ssh 192.168.0.116 "cd /opt; tar -xf -"

2、在A机压缩,并将压缩文件复制到B机
cd /opt ; tar -cf - datadir1 | ssh 192.168.0.116 "cd /opt; cat - > datadir1.tar"

3、将A机的压缩文件,复制到B机并解压缩
zcat dir.tar | ssh 192.168.0.116 "cd /opt; tar -xf -"

传输到远程:tar czf - file| ssh server "tar zxf -"

压缩到远程:tar czf - file| ssh server "cat > file.tar.gz"

解压到远程:ssh server "tar zxf -" < file.tar.gz

解压到本地:ssh server "cat file.tar.gz" | tar zxf -

-----------------------------------------------------------------

$target 表示目的机器,指远端机器
$backup_server 表示备份机器,同样也是指远端机器
$save 则是指备份目录

要求远端备份并拉回 local
ssh $target tar -cf - / --exclude /mnt | bzip2 -9 | cat > $target.tar.bz2

解开本地备份并回存到远端去
bunzip2 -dc $target.tar.bz2 | ssh $target "cd /;tar -pxkf -"

备份 local 资料,丟到远端去压缩并存档
tar cf - / --exclude xxx | ssh $backup_server "bzip2 -9 > $save/test.tar.bz2"

把远端资料拉回 local,作解压缩动作
ssh $backup_server "cat $save/test.tar.bz2" | bunzip2 | tar -xpkf -

在本地脚本放在远程执行:

cat myscript.sh | ssh kramer /bin/sh 
hostname
date
w
ifconfig
ps -ef | grep http | awk ‘{print $NF}‘

在远程较长的管道命令(这个同样可以用上面的脚本方式执行)

  1. #! /bin/sh
  2. ssh 172.16.1.2 <<eof< div="">
  3. sa=`/usr/sbin/alternatives --config java 2>&1`
  4. echo "Result:"
  5. echo "$sa"
  6. echo
  7. echo "Will I find anything when I look in that result for jdk1.6.0_05 ???"
  8. echo "$sa" | grep "jdk1.6.0_05"
  9. echo "Nope. I thought not! But the reason should be clear now!"
  10. EOF

ssh技巧

远程比较文件 
ssh remote-hosts cat memos/memo.draft | diff memos.new -

cat memos.new | ssh speedy diff - memos/memo.draft#diff <(ssh -n george cat /etc/passwd) <(ssh -n kramer cat /etc/passwd)

打包文件并直接传递到远程目录解开(不在本地生成文件) 
tar cf - some_directory | ssh kramer "( cd /path/to/destination; tar xf - )"

ssh 192.168.100.166 tar -cf - /var/www/html/centos/5/repodata |cat > tt.tar
ssh 192.168.10.145 tar -czf - ‘--exclude=*.gz‘ ‘--exclude=*.tgz‘ ‘--exclude=*.tar‘ /a8root/phpweb/website/images
直接获取远程文件tar并在本地保留
ssh 192.168.100.166 "find /var/www/html/centos/5/repodata -depth -print | cpio -oaV" | cat > tt.cpio

排除时参考文档:http://www.android100.org/html/201407/28/47322.html

时间: 2024-12-17 18:48:38

ssh结合tar命令把远程文件拉回来或推过去(实现数据无落地推送)的相关文章

Linux 命令 - scp: 远程文件拷贝

scp 与普通的文件复制命令 cp 类似,而它们之间最大的差别在于 scp 命令的源或目标文件是远程文件. 命令格式 scp [options] [[user@]host1:]file1 ... [[user@]host2:]file2 命令参数 -1 强制 scp 使用协议 1. -2 强制 scp 使用协议 2. -4 强制 scp 只使用 IPv4 的地址. -6 强制 scp 只使用 IPv6 的地址. -B 选择批处理模式. -C 允许压缩. -c cipher 选择 cipher 来

scp命令获取远程文件

一.scp是什么? scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的,可能会稍微影响一下速度. 二.scp有什么用? 1.我们需要获得远程服务器上的某个文件,远程服务器既没有配置ftp服务器,没有开启web服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过scp命令便可轻松的达到目的: 2.我们需要将本机上的文件上传到远程服务器上,远程服务器没有开启ftp服务器或共享,无

Linux下通过ssh来执行rsync同步远程文件

一般我们使用rsync有两种认证方式, rsync-daemon方式,需要配置本地文件,灵活性一般 ssh方式,直接远程连接传输,简单粗暴 记录一下相关命令参数,以防忘记. 同步需求 本机:本机用户bear,/home/bear/mydir 目录 远程服务器:[email protected]  ,USE用户bear下  /home/bear/workdir 目录 命令使用 1.从本地同步到远程 # 默认SSH端口 rsync -avz -e ssh /home/bear/mydir [emai

ssh实现免密码登录和文件传输

scp传输文件和文件夹 #向远端传文件 $ scp [-r] dir/file_name [email protected]_addr/domain_name:dir #从远端往本地传文件 $ scp [-r] [email protected]_addr/domain_name:dir/file_name dir usr_name是用户名 ip_addr是ip地址 domain_name是域名 当不输入user_name的时候会默认使用本地用户名 dir是文件目录 file_name是文件名

巧用tar命令

tar命令可以对文件进行归档.它最初设计是用来将数据存储在磁带上.tar可以将多个文件和文件夹保存为单个文件,同时还能保留所有的文件属性,如所有者.权限等.由tar创建的文件通常称为Tarball.下面介绍一下tar的用法: 命令使用格式: tar [OPTION...] [FILE]... 常用选项: -c:creat file -x:exact(提取) -r:向已存在的归档中添加新的未被归档的文件 -A:向已存在的归档中添加新的归档文件 -v:显示细节信息 -u:向归档文件中添加文件时,如果

Linux命令(30):tar命令-归档工具

tar命令 功能说明 tar是tape archive的缩写,是Linux下经常使用的归档工具,经常看到文件名以.tar和tgz结尾的文件,它们分别是用普通的tar命令归档的文件和用gzip归档的文件.tar归档文件可以由许多独立的文件.一个或多个目录层次或者两者的混合组合而成.用法如下:   tar [主选项+辅助选项] 文件或目录 常用参数 选项 说明 -c 新建文件 -r 列出归档文件的内容 -t 列出档案文件中已经归档的文件列表 -x 从打包的档案文件中还原文件 -u 更新档案文件,用新

Linux tar命令解压时提示时间戳异常的处理办法

在Linux服务器上的文件会有3个时间戳信息 访问时间(Access).修改时间(Modify).改变时间(Change),都是存放在该文件的Inode里面 问题描述: 公司网站是前后端分离的,所有的静态页面全部都需要单独部署,使用的是云服务.部署方式是通过 jenkins 从指定的 SVN 地址把 前端静态页面检出到 jenkins服务器,且每次检出的代码前都会把上一次的全部删除掉,也就是在检出代码的时候所有的文件都是重新创建的,时间戳每次都是当前系统的时间:由于公司出口带宽比较小,为了提高传

linux基础-第八单元 正文处理命令及tar命令

第八单元 正文处理命令及tar命令 使用cat命令进行文件的纵向合并 两种文件的纵向合并方法 归档文件和归档技术 归档的目的 什么是归档 tar命令的功能 tar命令的常用选项 使用tar命令创建.查看及抽取归档文件 使用tar命令创建归档文件 使用tar命令查看归档文件 使用tar命令抽取归档文件 文件的压缩和解压缩 什么是压缩 压缩的目的 什么是解压缩 gzip命令和gunzip命令 bzip2命令和bunzip2命令 在使用tar命令的同时进行压缩和解压缩 在使用tar命令的同时进行压缩和

辛星浅析tar命令的基本使用

我们通常使用tar命令来对文件或者目录进行打包或者压缩,可能朋友们刚接触的时候会有点晕,百度搜的时候就和查手册一样,不够通俗易懂,今天辛星就给朋友们用另一种方式去解决这个问题. 我们首先还是要对它的几个关键参数认识一下的: -c  表示创建一个打包文件,这里的c是create的首字母 -x   表示解包一个已经打包的文件 -t    表示查看一个tar包里面的文件 因此,c和x和t这三个参数只能存在一个,不能同时存在,因为我们不能在打包的同时又解包 然后就是两个常见的与压缩有关的参数: -z