您的位置:首頁技術文章
文章詳情頁

python - 管道符和ssh傳文件

瀏覽:120日期:2022-09-21 11:56:13

問題描述

看到可以用一條命令傳輸文件

gzip -c aa.txt | ssh root@192.168.1.1 ' gunzip -c - > /home/bb.txt'

請問這條命令怎么理解?還有,發現對文件夾進行這樣的操作會失敗,有什么辦法傳輸文件夾么?求指教

問題解答

回答1:命令參數解釋:

gzip -h

Usage: gzip [OPTION]... [FILE]...Compress or uncompress FILEs (by default, compress FILES in-place).Mandatory arguments to long options are mandatory for short options too. -c, --stdout write on standard output, keep original files unchanged -d, --decompress decompress -f, --force force overwrite of output file and compress links -h, --helpgive this help -l, --listlist compressed file contents -L, --license display software license -n, --no-name do not save or restore the original name and time stamp -N, --namesave or restore the original name and time stamp -q, --quiet suppress all warnings -r, --recursive operate recursively on directories -S, --suffix=SUF use suffix SUF on compressed files -t, --testtest compressed file integrity -v, --verbose verbose mode -V, --version display version number -1, --fastcompress faster -9, --bestcompress better --rsyncable Make rsync-friendly archiveWith no FILE, or when FILE is -, read standard input.

gunzip -h

Usage: gzip [OPTION]... [FILE]...Compress or uncompress FILEs (by default, compress FILES in-place).Mandatory arguments to long options are mandatory for short options too. -c, --stdout write on standard output, keep original files unchanged -d, --decompress decompress -f, --force force overwrite of output file and compress links -h, --helpgive this help -l, --listlist compressed file contents -L, --license display software license -n, --no-name do not save or restore the original name and time stamp -N, --namesave or restore the original name and time stamp -q, --quiet suppress all warnings -r, --recursive operate recursively on directories -S, --suffix=SUF use suffix SUF on compressed files -t, --testtest compressed file integrity -v, --verbose verbose mode -V, --version display version number -1, --fastcompress faster -9, --bestcompress better --rsyncable Make rsync-friendly archiveWith no FILE, or when FILE is -, read standard input.Report bugs to <bug-gzip@gnu.org>.

不知道鬧哪樣,兩條命令的幫助文檔是一樣的,開發者偷懶了

也就是說 -c 不壓縮文件,而是直接輸出到標準輸出。

gunzip -,不是從文件接收壓縮文件,而是從標準輸入接收。

|:管道>:重定向

整條命令分析

gzip -c aa.txt | ssh root@192.168.1.1 'gunzip -c - > /home/bb.txt'

gzip -c aa.txt:壓縮aa.txt文件,并將壓縮后的結果輸出到標準輸出

ssh root@192.168.1.1 '命令':在遠程機器上執行命令

命令gunzip -c -:解壓文件,原壓縮文件是由標準輸入傳入的,輸出結果直接輸出到標準輸出

> /home/bb.txt:將標準輸出重定向到文件/home/bb.txt

對文件夾進行這樣的操作會失敗

gzip不支持對目錄操作

回答2:

你要么完全換用netcat來收發。要么,本地tar壓縮一下,對端解壓縮。

回答3:

管道是將前一個命令輸出作為輸入。 也可以先壓縮成一個臨時文件,再用scp

標簽: Python 編程
相關文章:
国产综合久久一区二区三区