Maison  >  Questions et réponses  >  le corps du texte

python - 管道符和ssh传文件

看到可以用一条命令传输文件

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

请问这条命令怎么理解?
还有,发现对文件夹进行这样的操作会失败,有什么办法传输文件夹么?
求指教

阿神阿神2740 Il y a quelques jours762

répondre à tous(3)je répondrai

  • 大家讲道理

    大家讲道理2017-04-18 10:21:20

    Explication des paramètres de la commande :

    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, --help        give this help
      -l, --list        list compressed file contents
      -L, --license     display software license
      -n, --no-name     do not save or restore the original name and time stamp
      -N, --name        save 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, --test        test compressed file integrity
      -v, --verbose     verbose mode
      -V, --version     display version number
      -1, --fast        compress faster
      -9, --best        compress better
        --rsyncable   Make rsync-friendly archive
    
    With 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, --help        give this help
      -l, --list        list compressed file contents
      -L, --license     display software license
      -n, --no-name     do not save or restore the original name and time stamp
      -N, --name        save 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, --test        test compressed file integrity
      -v, --verbose     verbose mode
      -V, --version     display version number
      -1, --fast        compress faster
      -9, --best        compress better
        --rsyncable   Make rsync-friendly archive
    
    With no FILE, or when FILE is -, read standard input.
    
    Report bugs to <bug-gzip@gnu.org>.

    Je ne sais pas ce qui se passe. Les documents d'aide pour les deux commandes sont les mêmes. Le développeur est paresseux

    .

    En d'autres termes, -c ne compresse pas le fichier, mais le sort directement sur la sortie standard.

    gunzip -, au lieu de recevoir un fichier compressé à partir d'un fichier, le reçoit à partir d'une entrée standard.

    | : canal
    > : redirection


    Analyse de l'intégralité de la commande

    gzip -c aa.txt | ssh root@192.168.1.1 "gunzip -c - > /home/bb.txt"
    • gzip -c aa.txt : compressez le fichier aa.txt et affichez le résultat compressé sur la sortie standard

    • ssh root@192.168.1.1 "命令":Exécutez la commande sur la machine distante

    • Commande gunzip -c - : Décompressez le fichier. Le fichier compressé d'origine est transmis à partir de l'entrée standard et le résultat de la sortie est directement émis vers la sortie standard

    • > /home/bb.txt : Rediriger la sortie standard vers le fichier /home/bb.txt


    Cette opération sur un dossier échouera

    gzip ne prend pas en charge les opérations de répertoire

    répondre
    0
  • 阿神

    阿神2017-04-18 10:21:20

    Vous pouvez soit passer complètement à netcat pour l'envoi et la réception.
    Ou compressez-le avec du tar local et décompressez-le à l'extrémité opposée.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:21:20

    Piping prend la sortie de la commande précédente comme entrée. Vous pouvez également d'abord le compresser dans un fichier temporaire, puis utiliser scp

    répondre
    0
  • Annulerrépondre