How to copy a file or entire directory over ssh, archived or not. Using ssh only, in case scp or sftp aren’t available.
Directory, Local -> Remote
tar -zcvf - /path/to/dir/* | ssh user@remote 'cd DESTDIR ; tar -zxvf -'
tar -zcvf - /path/to/dir/* | ssh user@remote "cat /path/to/remote/file.tar.gz"The “-” after the “f” in tar redirects, so first tar archives the directory to stdout which gets piped to the other side and becomes input for the second tar. “z” can be replaced with “j” for better compression if both tar know about it.
Directory, Remote -> Local
ssh user@remote "tar -jcvf - /path/to/dir/*" | tar -zxvf -
ssh user@remote "tar -jcvf - /path/to/dir/*" | cat > localarchive.tar.bz2File, Local -> Remote
cat /path/to/file | ssh user@host cat ">" /path/to/file
dd if=/path/to/file | ssh user@host dd of=/path/to/fileFile Remote -> Local
ssh user@host cat /path/to/remote > /path/to/local
ssh user@host dd if=/path/to/remote | dd of=/path/to/localDirectory/File Remote1 -> Remote2
ssh user@host1 "tar -cvf - /path/to/source/files*" | ssh user@host2 "cd /path/to/destination; tar -xvf -"