ssh結合tar命令把遠程檔案拉回來或推過去(實現資料無落地推送)

來源:互聯網
上載者:User

標籤:

登入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   

ssh結合tar命令把遠程檔案拉回來或推過去(實現資料無落地推送)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.