Using sftp to Transfer a Directory?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
34
down vote

favorite
12












When I try to use sftp to transfer a directory containing files, I get an error message:



skipping non-regular file directory_name


The directory contains a couple of files and two subdirectories.



What am I doing wrong?










share|improve this question



























    up vote
    34
    down vote

    favorite
    12












    When I try to use sftp to transfer a directory containing files, I get an error message:



    skipping non-regular file directory_name


    The directory contains a couple of files and two subdirectories.



    What am I doing wrong?










    share|improve this question

























      up vote
      34
      down vote

      favorite
      12









      up vote
      34
      down vote

      favorite
      12






      12





      When I try to use sftp to transfer a directory containing files, I get an error message:



      skipping non-regular file directory_name


      The directory contains a couple of files and two subdirectories.



      What am I doing wrong?










      share|improve this question















      When I try to use sftp to transfer a directory containing files, I get an error message:



      skipping non-regular file directory_name


      The directory contains a couple of files and two subdirectories.



      What am I doing wrong?







      directory recursive sftp






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited May 23 '12 at 23:10









      Gilles

      512k12010151546




      512k12010151546










      asked Dec 15 '11 at 23:38









      haziz

      89831332




      89831332




















          7 Answers
          7






          active

          oldest

          votes

















          up vote
          34
          down vote



          accepted










          sftp, like cp and scp, requires that when you copy a folder (and its contents, obviously), you have to explicitly tell it you want to transfer the folder recursively with the -r option.



          So, add -r to the command.






          share|improve this answer


















          • 2




            -r after the put command? I am getting a "put: Invalid flag -r" error message message if I do. Adding it to the original sftp command also does not work.
            – haziz
            Dec 17 '11 at 9:12






          • 3




            Add -r to the sftp command when you're connecting. sftp -r user@host
            – Kevin
            Dec 17 '11 at 15:50






          • 1




            It looks like the -r option was added to OpenSSH sftp version 4.7. Go here and you can use the form at the top to see different versions of the man page.
            – Kenster
            Oct 2 '14 at 20:55






          • 2




            Beware that there is a quite long standing bug in OpenSSH's SFTP: when copying recursively a directory to a remote server, the directory itself must already exist on the target server otherwise the transfer will fail with a non-explicit error message: Couldn't canonicalise: No such file or directory.
            – WhiteWinterWolf
            Dec 7 '15 at 10:09






          • 1




            should be something like: # sftp user@remote-host #> get -r remote-folder
            – hbinduni
            Aug 1 '17 at 5:03


















          up vote
          15
          down vote













          I can only suggest, you use rsync. It is somewhat of an industry standard, when moving files over secure connections.



          rsync -alPvz ./source_dir server.com:destination_dir


          It is what I've been using for years by now.



          (the -a option takes care of things like directory recursion)






          share|improve this answer
















          • 1




            A bit of clarification on the parameters mentioned: -a = recursion + keep symbolic links, permissions, modification times, owner, group, special files and device files (the latter requires super-user privileges); -l = keep symbolic links (already included in -a); -P = show progress during the transfer + keep partially transferred files; -v = verbose mode (however it seems mandatory when using -P to avoid a weird (bug?) protocol version mismatch error); -z = enable compression of transferred data.
            – WhiteWinterWolf
            Dec 7 '15 at 13:52










          • @WhiteWinterWolf it seems to be version dependant whether the -l switch has to be used or not. I remember older versions didn't include -l in -a.
            – polemon
            Dec 7 '15 at 15:13

















          up vote
          5
          down vote













          You may also be able to use use scp. The general format is



          scp -rp sourceDirName username@server:destDirName


          scp means "secure copy". The flags are




          • -r recurse into subdirectories


          • -p preserve modification times

          I believe the rest of the items are self-explanatory






          share|improve this answer






















          • and scp -rp -P <port> .... when using a non-standard port
            – Pancho
            May 7 '16 at 9:25

















          up vote
          4
          down vote













          If rsync is not an option, I would next recommend lftp:



          lftp sftp://user@host.com/path/path/


          Then use the mirror command to recursively upload, like this:



          mirror -R


          (Note that recursion is the default. The -R is for reverse — to make the mirror command upload instead of download. Try adding --dry-run to do a trial to make sure it's doing what you expect.)



          Or to upload without recursion:



          mirror --no-recursion


          You have to cd into the directories you want to mirror. Works great!






          share|improve this answer





























            up vote
            2
            down vote













            If you can, use sshfs. It's a FUSE filesystem, available on most modern unices, and works with any SFTP server. This is a remote filesystem: it allows you to manipulate remote files (over the SFTP protocol) with the usual utilities.



            mkdir /mount/point
            sshfs server.example.com:/remote/path /mount/point
            ls /mount/point
            cp -Rp /mount/point/somedir /local/location
            fusemount -d /mount/point





            share|improve this answer



























              up vote
              2
              down vote













              This works for me:



              1) connect via sftp to remote host



              2) change into the remote directory you wish to copy. (Example: cd Music)



              3) change to the local directory you wish to copy stuff to. (Example: lcd Desktop)



              4) Issue this command: get -r *






              share|improve this answer





























                up vote
                0
                down vote













                It's a bit of a kludge but what works for me is to:



                1. Use ssh to login to the remote machine

                2. Use sftp from the remote machine to your local machine

                3. Then use the get command with the -r option to move the directory and all of its files.





                share|improve this answer






















                • get dont work with -r sftp> get -r data /opt/bin get: Invalid flag -r
                  – Skynet
                  Aug 9 '17 at 10:20










                Your Answer







                StackExchange.ready(function()
                var channelOptions =
                tags: "".split(" "),
                id: "106"
                ;
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function()
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled)
                StackExchange.using("snippets", function()
                createEditor();
                );

                else
                createEditor();

                );

                function createEditor()
                StackExchange.prepareEditor(
                heartbeatType: 'answer',
                convertImagesToLinks: false,
                noModals: false,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: null,
                bindNavPrevention: true,
                postfix: "",
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                );



                );













                 

                draft saved


                draft discarded


















                StackExchange.ready(
                function ()
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f26934%2fusing-sftp-to-transfer-a-directory%23new-answer', 'question_page');

                );

                Post as a guest






























                7 Answers
                7






                active

                oldest

                votes








                7 Answers
                7






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes








                up vote
                34
                down vote



                accepted










                sftp, like cp and scp, requires that when you copy a folder (and its contents, obviously), you have to explicitly tell it you want to transfer the folder recursively with the -r option.



                So, add -r to the command.






                share|improve this answer


















                • 2




                  -r after the put command? I am getting a "put: Invalid flag -r" error message message if I do. Adding it to the original sftp command also does not work.
                  – haziz
                  Dec 17 '11 at 9:12






                • 3




                  Add -r to the sftp command when you're connecting. sftp -r user@host
                  – Kevin
                  Dec 17 '11 at 15:50






                • 1




                  It looks like the -r option was added to OpenSSH sftp version 4.7. Go here and you can use the form at the top to see different versions of the man page.
                  – Kenster
                  Oct 2 '14 at 20:55






                • 2




                  Beware that there is a quite long standing bug in OpenSSH's SFTP: when copying recursively a directory to a remote server, the directory itself must already exist on the target server otherwise the transfer will fail with a non-explicit error message: Couldn't canonicalise: No such file or directory.
                  – WhiteWinterWolf
                  Dec 7 '15 at 10:09






                • 1




                  should be something like: # sftp user@remote-host #> get -r remote-folder
                  – hbinduni
                  Aug 1 '17 at 5:03















                up vote
                34
                down vote



                accepted










                sftp, like cp and scp, requires that when you copy a folder (and its contents, obviously), you have to explicitly tell it you want to transfer the folder recursively with the -r option.



                So, add -r to the command.






                share|improve this answer


















                • 2




                  -r after the put command? I am getting a "put: Invalid flag -r" error message message if I do. Adding it to the original sftp command also does not work.
                  – haziz
                  Dec 17 '11 at 9:12






                • 3




                  Add -r to the sftp command when you're connecting. sftp -r user@host
                  – Kevin
                  Dec 17 '11 at 15:50






                • 1




                  It looks like the -r option was added to OpenSSH sftp version 4.7. Go here and you can use the form at the top to see different versions of the man page.
                  – Kenster
                  Oct 2 '14 at 20:55






                • 2




                  Beware that there is a quite long standing bug in OpenSSH's SFTP: when copying recursively a directory to a remote server, the directory itself must already exist on the target server otherwise the transfer will fail with a non-explicit error message: Couldn't canonicalise: No such file or directory.
                  – WhiteWinterWolf
                  Dec 7 '15 at 10:09






                • 1




                  should be something like: # sftp user@remote-host #> get -r remote-folder
                  – hbinduni
                  Aug 1 '17 at 5:03













                up vote
                34
                down vote



                accepted







                up vote
                34
                down vote



                accepted






                sftp, like cp and scp, requires that when you copy a folder (and its contents, obviously), you have to explicitly tell it you want to transfer the folder recursively with the -r option.



                So, add -r to the command.






                share|improve this answer














                sftp, like cp and scp, requires that when you copy a folder (and its contents, obviously), you have to explicitly tell it you want to transfer the folder recursively with the -r option.



                So, add -r to the command.







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Oct 2 '14 at 20:56

























                answered Dec 16 '11 at 0:18









                Kevin

                26.1k95797




                26.1k95797







                • 2




                  -r after the put command? I am getting a "put: Invalid flag -r" error message message if I do. Adding it to the original sftp command also does not work.
                  – haziz
                  Dec 17 '11 at 9:12






                • 3




                  Add -r to the sftp command when you're connecting. sftp -r user@host
                  – Kevin
                  Dec 17 '11 at 15:50






                • 1




                  It looks like the -r option was added to OpenSSH sftp version 4.7. Go here and you can use the form at the top to see different versions of the man page.
                  – Kenster
                  Oct 2 '14 at 20:55






                • 2




                  Beware that there is a quite long standing bug in OpenSSH's SFTP: when copying recursively a directory to a remote server, the directory itself must already exist on the target server otherwise the transfer will fail with a non-explicit error message: Couldn't canonicalise: No such file or directory.
                  – WhiteWinterWolf
                  Dec 7 '15 at 10:09






                • 1




                  should be something like: # sftp user@remote-host #> get -r remote-folder
                  – hbinduni
                  Aug 1 '17 at 5:03













                • 2




                  -r after the put command? I am getting a "put: Invalid flag -r" error message message if I do. Adding it to the original sftp command also does not work.
                  – haziz
                  Dec 17 '11 at 9:12






                • 3




                  Add -r to the sftp command when you're connecting. sftp -r user@host
                  – Kevin
                  Dec 17 '11 at 15:50






                • 1




                  It looks like the -r option was added to OpenSSH sftp version 4.7. Go here and you can use the form at the top to see different versions of the man page.
                  – Kenster
                  Oct 2 '14 at 20:55






                • 2




                  Beware that there is a quite long standing bug in OpenSSH's SFTP: when copying recursively a directory to a remote server, the directory itself must already exist on the target server otherwise the transfer will fail with a non-explicit error message: Couldn't canonicalise: No such file or directory.
                  – WhiteWinterWolf
                  Dec 7 '15 at 10:09






                • 1




                  should be something like: # sftp user@remote-host #> get -r remote-folder
                  – hbinduni
                  Aug 1 '17 at 5:03








                2




                2




                -r after the put command? I am getting a "put: Invalid flag -r" error message message if I do. Adding it to the original sftp command also does not work.
                – haziz
                Dec 17 '11 at 9:12




                -r after the put command? I am getting a "put: Invalid flag -r" error message message if I do. Adding it to the original sftp command also does not work.
                – haziz
                Dec 17 '11 at 9:12




                3




                3




                Add -r to the sftp command when you're connecting. sftp -r user@host
                – Kevin
                Dec 17 '11 at 15:50




                Add -r to the sftp command when you're connecting. sftp -r user@host
                – Kevin
                Dec 17 '11 at 15:50




                1




                1




                It looks like the -r option was added to OpenSSH sftp version 4.7. Go here and you can use the form at the top to see different versions of the man page.
                – Kenster
                Oct 2 '14 at 20:55




                It looks like the -r option was added to OpenSSH sftp version 4.7. Go here and you can use the form at the top to see different versions of the man page.
                – Kenster
                Oct 2 '14 at 20:55




                2




                2




                Beware that there is a quite long standing bug in OpenSSH's SFTP: when copying recursively a directory to a remote server, the directory itself must already exist on the target server otherwise the transfer will fail with a non-explicit error message: Couldn't canonicalise: No such file or directory.
                – WhiteWinterWolf
                Dec 7 '15 at 10:09




                Beware that there is a quite long standing bug in OpenSSH's SFTP: when copying recursively a directory to a remote server, the directory itself must already exist on the target server otherwise the transfer will fail with a non-explicit error message: Couldn't canonicalise: No such file or directory.
                – WhiteWinterWolf
                Dec 7 '15 at 10:09




                1




                1




                should be something like: # sftp user@remote-host #> get -r remote-folder
                – hbinduni
                Aug 1 '17 at 5:03





                should be something like: # sftp user@remote-host #> get -r remote-folder
                – hbinduni
                Aug 1 '17 at 5:03













                up vote
                15
                down vote













                I can only suggest, you use rsync. It is somewhat of an industry standard, when moving files over secure connections.



                rsync -alPvz ./source_dir server.com:destination_dir


                It is what I've been using for years by now.



                (the -a option takes care of things like directory recursion)






                share|improve this answer
















                • 1




                  A bit of clarification on the parameters mentioned: -a = recursion + keep symbolic links, permissions, modification times, owner, group, special files and device files (the latter requires super-user privileges); -l = keep symbolic links (already included in -a); -P = show progress during the transfer + keep partially transferred files; -v = verbose mode (however it seems mandatory when using -P to avoid a weird (bug?) protocol version mismatch error); -z = enable compression of transferred data.
                  – WhiteWinterWolf
                  Dec 7 '15 at 13:52










                • @WhiteWinterWolf it seems to be version dependant whether the -l switch has to be used or not. I remember older versions didn't include -l in -a.
                  – polemon
                  Dec 7 '15 at 15:13














                up vote
                15
                down vote













                I can only suggest, you use rsync. It is somewhat of an industry standard, when moving files over secure connections.



                rsync -alPvz ./source_dir server.com:destination_dir


                It is what I've been using for years by now.



                (the -a option takes care of things like directory recursion)






                share|improve this answer
















                • 1




                  A bit of clarification on the parameters mentioned: -a = recursion + keep symbolic links, permissions, modification times, owner, group, special files and device files (the latter requires super-user privileges); -l = keep symbolic links (already included in -a); -P = show progress during the transfer + keep partially transferred files; -v = verbose mode (however it seems mandatory when using -P to avoid a weird (bug?) protocol version mismatch error); -z = enable compression of transferred data.
                  – WhiteWinterWolf
                  Dec 7 '15 at 13:52










                • @WhiteWinterWolf it seems to be version dependant whether the -l switch has to be used or not. I remember older versions didn't include -l in -a.
                  – polemon
                  Dec 7 '15 at 15:13












                up vote
                15
                down vote










                up vote
                15
                down vote









                I can only suggest, you use rsync. It is somewhat of an industry standard, when moving files over secure connections.



                rsync -alPvz ./source_dir server.com:destination_dir


                It is what I've been using for years by now.



                (the -a option takes care of things like directory recursion)






                share|improve this answer












                I can only suggest, you use rsync. It is somewhat of an industry standard, when moving files over secure connections.



                rsync -alPvz ./source_dir server.com:destination_dir


                It is what I've been using for years by now.



                (the -a option takes care of things like directory recursion)







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered May 24 '12 at 1:02









                polemon

                5,49464076




                5,49464076







                • 1




                  A bit of clarification on the parameters mentioned: -a = recursion + keep symbolic links, permissions, modification times, owner, group, special files and device files (the latter requires super-user privileges); -l = keep symbolic links (already included in -a); -P = show progress during the transfer + keep partially transferred files; -v = verbose mode (however it seems mandatory when using -P to avoid a weird (bug?) protocol version mismatch error); -z = enable compression of transferred data.
                  – WhiteWinterWolf
                  Dec 7 '15 at 13:52










                • @WhiteWinterWolf it seems to be version dependant whether the -l switch has to be used or not. I remember older versions didn't include -l in -a.
                  – polemon
                  Dec 7 '15 at 15:13












                • 1




                  A bit of clarification on the parameters mentioned: -a = recursion + keep symbolic links, permissions, modification times, owner, group, special files and device files (the latter requires super-user privileges); -l = keep symbolic links (already included in -a); -P = show progress during the transfer + keep partially transferred files; -v = verbose mode (however it seems mandatory when using -P to avoid a weird (bug?) protocol version mismatch error); -z = enable compression of transferred data.
                  – WhiteWinterWolf
                  Dec 7 '15 at 13:52










                • @WhiteWinterWolf it seems to be version dependant whether the -l switch has to be used or not. I remember older versions didn't include -l in -a.
                  – polemon
                  Dec 7 '15 at 15:13







                1




                1




                A bit of clarification on the parameters mentioned: -a = recursion + keep symbolic links, permissions, modification times, owner, group, special files and device files (the latter requires super-user privileges); -l = keep symbolic links (already included in -a); -P = show progress during the transfer + keep partially transferred files; -v = verbose mode (however it seems mandatory when using -P to avoid a weird (bug?) protocol version mismatch error); -z = enable compression of transferred data.
                – WhiteWinterWolf
                Dec 7 '15 at 13:52




                A bit of clarification on the parameters mentioned: -a = recursion + keep symbolic links, permissions, modification times, owner, group, special files and device files (the latter requires super-user privileges); -l = keep symbolic links (already included in -a); -P = show progress during the transfer + keep partially transferred files; -v = verbose mode (however it seems mandatory when using -P to avoid a weird (bug?) protocol version mismatch error); -z = enable compression of transferred data.
                – WhiteWinterWolf
                Dec 7 '15 at 13:52












                @WhiteWinterWolf it seems to be version dependant whether the -l switch has to be used or not. I remember older versions didn't include -l in -a.
                – polemon
                Dec 7 '15 at 15:13




                @WhiteWinterWolf it seems to be version dependant whether the -l switch has to be used or not. I remember older versions didn't include -l in -a.
                – polemon
                Dec 7 '15 at 15:13










                up vote
                5
                down vote













                You may also be able to use use scp. The general format is



                scp -rp sourceDirName username@server:destDirName


                scp means "secure copy". The flags are




                • -r recurse into subdirectories


                • -p preserve modification times

                I believe the rest of the items are self-explanatory






                share|improve this answer






















                • and scp -rp -P <port> .... when using a non-standard port
                  – Pancho
                  May 7 '16 at 9:25














                up vote
                5
                down vote













                You may also be able to use use scp. The general format is



                scp -rp sourceDirName username@server:destDirName


                scp means "secure copy". The flags are




                • -r recurse into subdirectories


                • -p preserve modification times

                I believe the rest of the items are self-explanatory






                share|improve this answer






















                • and scp -rp -P <port> .... when using a non-standard port
                  – Pancho
                  May 7 '16 at 9:25












                up vote
                5
                down vote










                up vote
                5
                down vote









                You may also be able to use use scp. The general format is



                scp -rp sourceDirName username@server:destDirName


                scp means "secure copy". The flags are




                • -r recurse into subdirectories


                • -p preserve modification times

                I believe the rest of the items are self-explanatory






                share|improve this answer














                You may also be able to use use scp. The general format is



                scp -rp sourceDirName username@server:destDirName


                scp means "secure copy". The flags are




                • -r recurse into subdirectories


                • -p preserve modification times

                I believe the rest of the items are self-explanatory







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Mar 25 '16 at 17:42









                roaima

                40.7k547110




                40.7k547110










                answered Mar 25 '16 at 17:31









                Bina Ramamurthy

                5111




                5111











                • and scp -rp -P <port> .... when using a non-standard port
                  – Pancho
                  May 7 '16 at 9:25
















                • and scp -rp -P <port> .... when using a non-standard port
                  – Pancho
                  May 7 '16 at 9:25















                and scp -rp -P <port> .... when using a non-standard port
                – Pancho
                May 7 '16 at 9:25




                and scp -rp -P <port> .... when using a non-standard port
                – Pancho
                May 7 '16 at 9:25










                up vote
                4
                down vote













                If rsync is not an option, I would next recommend lftp:



                lftp sftp://user@host.com/path/path/


                Then use the mirror command to recursively upload, like this:



                mirror -R


                (Note that recursion is the default. The -R is for reverse — to make the mirror command upload instead of download. Try adding --dry-run to do a trial to make sure it's doing what you expect.)



                Or to upload without recursion:



                mirror --no-recursion


                You have to cd into the directories you want to mirror. Works great!






                share|improve this answer


























                  up vote
                  4
                  down vote













                  If rsync is not an option, I would next recommend lftp:



                  lftp sftp://user@host.com/path/path/


                  Then use the mirror command to recursively upload, like this:



                  mirror -R


                  (Note that recursion is the default. The -R is for reverse — to make the mirror command upload instead of download. Try adding --dry-run to do a trial to make sure it's doing what you expect.)



                  Or to upload without recursion:



                  mirror --no-recursion


                  You have to cd into the directories you want to mirror. Works great!






                  share|improve this answer
























                    up vote
                    4
                    down vote










                    up vote
                    4
                    down vote









                    If rsync is not an option, I would next recommend lftp:



                    lftp sftp://user@host.com/path/path/


                    Then use the mirror command to recursively upload, like this:



                    mirror -R


                    (Note that recursion is the default. The -R is for reverse — to make the mirror command upload instead of download. Try adding --dry-run to do a trial to make sure it's doing what you expect.)



                    Or to upload without recursion:



                    mirror --no-recursion


                    You have to cd into the directories you want to mirror. Works great!






                    share|improve this answer














                    If rsync is not an option, I would next recommend lftp:



                    lftp sftp://user@host.com/path/path/


                    Then use the mirror command to recursively upload, like this:



                    mirror -R


                    (Note that recursion is the default. The -R is for reverse — to make the mirror command upload instead of download. Try adding --dry-run to do a trial to make sure it's doing what you expect.)



                    Or to upload without recursion:



                    mirror --no-recursion


                    You have to cd into the directories you want to mirror. Works great!







                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited Nov 28 '15 at 16:53









                    mattdm

                    27.3k1170109




                    27.3k1170109










                    answered Dec 16 '14 at 14:25









                    Banago

                    1413




                    1413




















                        up vote
                        2
                        down vote













                        If you can, use sshfs. It's a FUSE filesystem, available on most modern unices, and works with any SFTP server. This is a remote filesystem: it allows you to manipulate remote files (over the SFTP protocol) with the usual utilities.



                        mkdir /mount/point
                        sshfs server.example.com:/remote/path /mount/point
                        ls /mount/point
                        cp -Rp /mount/point/somedir /local/location
                        fusemount -d /mount/point





                        share|improve this answer
























                          up vote
                          2
                          down vote













                          If you can, use sshfs. It's a FUSE filesystem, available on most modern unices, and works with any SFTP server. This is a remote filesystem: it allows you to manipulate remote files (over the SFTP protocol) with the usual utilities.



                          mkdir /mount/point
                          sshfs server.example.com:/remote/path /mount/point
                          ls /mount/point
                          cp -Rp /mount/point/somedir /local/location
                          fusemount -d /mount/point





                          share|improve this answer






















                            up vote
                            2
                            down vote










                            up vote
                            2
                            down vote









                            If you can, use sshfs. It's a FUSE filesystem, available on most modern unices, and works with any SFTP server. This is a remote filesystem: it allows you to manipulate remote files (over the SFTP protocol) with the usual utilities.



                            mkdir /mount/point
                            sshfs server.example.com:/remote/path /mount/point
                            ls /mount/point
                            cp -Rp /mount/point/somedir /local/location
                            fusemount -d /mount/point





                            share|improve this answer












                            If you can, use sshfs. It's a FUSE filesystem, available on most modern unices, and works with any SFTP server. This is a remote filesystem: it allows you to manipulate remote files (over the SFTP protocol) with the usual utilities.



                            mkdir /mount/point
                            sshfs server.example.com:/remote/path /mount/point
                            ls /mount/point
                            cp -Rp /mount/point/somedir /local/location
                            fusemount -d /mount/point






                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered May 23 '12 at 23:22









                            Gilles

                            512k12010151546




                            512k12010151546




















                                up vote
                                2
                                down vote













                                This works for me:



                                1) connect via sftp to remote host



                                2) change into the remote directory you wish to copy. (Example: cd Music)



                                3) change to the local directory you wish to copy stuff to. (Example: lcd Desktop)



                                4) Issue this command: get -r *






                                share|improve this answer


























                                  up vote
                                  2
                                  down vote













                                  This works for me:



                                  1) connect via sftp to remote host



                                  2) change into the remote directory you wish to copy. (Example: cd Music)



                                  3) change to the local directory you wish to copy stuff to. (Example: lcd Desktop)



                                  4) Issue this command: get -r *






                                  share|improve this answer
























                                    up vote
                                    2
                                    down vote










                                    up vote
                                    2
                                    down vote









                                    This works for me:



                                    1) connect via sftp to remote host



                                    2) change into the remote directory you wish to copy. (Example: cd Music)



                                    3) change to the local directory you wish to copy stuff to. (Example: lcd Desktop)



                                    4) Issue this command: get -r *






                                    share|improve this answer














                                    This works for me:



                                    1) connect via sftp to remote host



                                    2) change into the remote directory you wish to copy. (Example: cd Music)



                                    3) change to the local directory you wish to copy stuff to. (Example: lcd Desktop)



                                    4) Issue this command: get -r *







                                    share|improve this answer














                                    share|improve this answer



                                    share|improve this answer








                                    edited Sep 3 '13 at 14:36









                                    Anthon

                                    58.9k1796160




                                    58.9k1796160










                                    answered Sep 3 '13 at 14:16









                                    Don Karon

                                    311




                                    311




















                                        up vote
                                        0
                                        down vote













                                        It's a bit of a kludge but what works for me is to:



                                        1. Use ssh to login to the remote machine

                                        2. Use sftp from the remote machine to your local machine

                                        3. Then use the get command with the -r option to move the directory and all of its files.





                                        share|improve this answer






















                                        • get dont work with -r sftp> get -r data /opt/bin get: Invalid flag -r
                                          – Skynet
                                          Aug 9 '17 at 10:20














                                        up vote
                                        0
                                        down vote













                                        It's a bit of a kludge but what works for me is to:



                                        1. Use ssh to login to the remote machine

                                        2. Use sftp from the remote machine to your local machine

                                        3. Then use the get command with the -r option to move the directory and all of its files.





                                        share|improve this answer






















                                        • get dont work with -r sftp> get -r data /opt/bin get: Invalid flag -r
                                          – Skynet
                                          Aug 9 '17 at 10:20












                                        up vote
                                        0
                                        down vote










                                        up vote
                                        0
                                        down vote









                                        It's a bit of a kludge but what works for me is to:



                                        1. Use ssh to login to the remote machine

                                        2. Use sftp from the remote machine to your local machine

                                        3. Then use the get command with the -r option to move the directory and all of its files.





                                        share|improve this answer














                                        It's a bit of a kludge but what works for me is to:



                                        1. Use ssh to login to the remote machine

                                        2. Use sftp from the remote machine to your local machine

                                        3. Then use the get command with the -r option to move the directory and all of its files.






                                        share|improve this answer














                                        share|improve this answer



                                        share|improve this answer








                                        edited Feb 10 '16 at 23:09









                                        sam

                                        12.6k31326




                                        12.6k31326










                                        answered Feb 10 '16 at 22:27









                                        Matthew Greene

                                        91




                                        91











                                        • get dont work with -r sftp> get -r data /opt/bin get: Invalid flag -r
                                          – Skynet
                                          Aug 9 '17 at 10:20
















                                        • get dont work with -r sftp> get -r data /opt/bin get: Invalid flag -r
                                          – Skynet
                                          Aug 9 '17 at 10:20















                                        get dont work with -r sftp> get -r data /opt/bin get: Invalid flag -r
                                        – Skynet
                                        Aug 9 '17 at 10:20




                                        get dont work with -r sftp> get -r data /opt/bin get: Invalid flag -r
                                        – Skynet
                                        Aug 9 '17 at 10:20

















                                         

                                        draft saved


                                        draft discarded















































                                         


                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function ()
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f26934%2fusing-sftp-to-transfer-a-directory%23new-answer', 'question_page');

                                        );

                                        Post as a guest













































































                                        Popular posts from this blog

                                        Peggy Mitchell

                                        The Forum (Inglewood, California)

                                        Palaiologos