How do I get an entire directory in sftp?
I'm just learning to use sftp, and I want to copy a directory from the remote computer to my local computer. If I try
get [directory]it gives me this error:
Cannot download non-regular file: /home/mpirocch/Documentsget -R doesn't work, either.
9 Answers
Use the -r (recursive) flag:
get -r * 11 Use:
scp -r mpirocch@my-server:/home/mpirocch/Documents Documents 10 Use lftp:
lftp sftp://user@hostThen, within lftp, cd into the directory you want to copy,
and use the mirror command to recursively download the selected directory,
like this:
mirrorThis command accepts options and arguments:
mirror [OPTIONS] [source [target]]
For example, the -R (or --reverse) option
will cause it to upload the local directory tree to the remote directory:
mirror -RSee the lftp(1) man page at the project’s siteor at Debian.org for other commands and options.
well this little guide should help, mirror a remote server to local folder with lftp
lftp sftp://user::22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'
sftp://= uses SFTP protocolmirror= mirror modeverbose= shows the files being downloadeduse-pget-n= number of segments, realy useful to speed up big filesparallel= downloads multiplier files at the same time
if you want to download files in parallel switch out use-pget-n=8 with --parallel=8
hope this helps anyone needing to mirror a remote folder to a local folder
3Don't use the sftp program directly if you can find something better. For Linux, many file managers (at least Nautilus and Dolphin, the GNOME and KDE ones) support sftp natively, and there's always sshfs. For windows, there's WinSCP, and probably others. The point of all of these is to let you access files over sftp as if they were on a regular filesytem, so you don't have to care that you're accessing them over sftp.
2Try mget instead of get.
Clarification: mget will work if you are inside the directory you want to copy; if you do something like this:
sftp> cd dir_to_get
sftp> mget *it will get all the files in that directory. However, it will not recursively get the contents of any subdirectories.
3get -r [directory]gets [directory] and everything under it, where r stands for recursive. I found this just by typing help from sftp.
As with cp:
scp -rp user@host:/path/to/dir dirThe above will preserve times and modes of the original files and subdirectories. This is especially useful for the retrieval of backups.
2I have Java dist folder in remote server, where i have following tree:
- dist
--- Audio.jar
--- README
--- lib
----- lib.jarGoal is: I want to use SFTP? And put them in /tmp/<>
Step 1. sftp remoteuser@ip
Step 2. cd /var/tmp
Step 2. lmkdir /tmp/dist; lmkdir /tmp/dist/lib
Step 3. lcd /tmp/dist
Step 4. mget *
Step 5. lcd /tmp/dist/lib
Step 6. mget *
Step 7. finally i have my goal
$ ls
Audio.jar lib README.TXT