- How do I copy a folder from remote to local using scp?
- 13 Answers 13
- SSH / TransferFiles
- Secure Copy (scp)
- Secure FTP (sftp)
- SSHFS
- GNOME
- KDE
- Using other programs
- Copying a Directory with SCP
- Downloading a Directory
- Uploading a Directory
- Conclusion
- Копирование файлов с помощью команды SCP
- Необходимость в SSH-сервере
- Синтаксис и использование утилиты SCP
- Выбор пользователя
- Копирование директории
- Копирование с сервера на компьютер
How do I copy a folder from remote to local using scp?
How do I copy a folder from remote to local host using scp ? I use ssh to log in to my server.
Then, I would like to copy the remote folder foo to local /home/user/Desktop . How do I achieve this?
The OP’s question was whether it is possible to copy file from remote to local host while ssh’d to remote host. I’m not sure why no single answer has correctly addressed his/her question.
The premise of the question is incorrect. The idea is, once logged into ssh, how to move files from the logged-in machine back to the client that is logged in. However, scp is not aware of nor can it use the ssh connection. It is making its own connections. So the simple solution is create a new terminal window on the local workstation, and run scp that transfers files from the remote server to local machine. E.g., scp -i key user@remote:/remote-dir/remote-file /local-dir/local-file
@sjas: in mc it’s easier to use Left/Right on the menu > Shell link where you can type the alias you have in your ~/.ssh/config e.g. myhost: > OK
@jeffmcneill yes your right. But you didn’t address directly JeffDror, so I guess most people did not realize that your are answering JeffDror’s question.
13 Answers 13
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
By not including the trailing ‘/’ at the end of foo, you will copy the directory itself (including contents), rather than only the contents of the directory.
-r Recursively copy entire directories
Two nice-to-knows I found: the -C flag adds compression and the -c flag lets you pass in other cipher types for better performance, like scp -c blowfish a@b:something . as seen in dimuthu’s answer
This answer lacks important explanation. Will you end up with Desktop/foo or will you have Desktop/allcontentsofFooGohere scp seems to act weird sometimes to me it does one thing then another
@Toskan with scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/ you should end up with Desktop/foo . With scp -r user@your.server.example.com:/path/to/foo/. /home/user/Desktop/ you will end up with the contents of foo in Desktop and all the sub-dirs of foo strewn under Desktop
To use full power of scp you need to go through next steps:
Then, for example if you have this ~/.ssh/config:
Host test User testuser HostName test-site.example Port 22022 Host prod User produser HostName production-site.example Port 22022
you’ll save yourself from password entry and simplify scp syntax like this:
scp -r prod:/path/foo /home/user/Desktop # copy to local scp -r prod:/path/foo test:/tmp # copy from remote prod to remote test
More over, you will be able to use remote path-completion:
scp test:/var/log/ # press tab twice Display all 151 possibilities? (y or n)
For enabling remote bash-completion you need to have bash-shell on both and hosts, and properly working bash-completion. For more information see related questions:
SSH / TransferFiles
Another important function of SSH is allowing secure file transfer using SCP and SFTP.
Secure Copy (scp)
Just as all modern Unix-like systems have an SSH client, they also have SCP and SFTP clients. To copy a file from your computer to another computer with ssh, go to a command-line and type:
For example, to copy your TPS Reports to Joe’s Desktop:
scp "TPS Reports.odw" joe@laptop:Desktop/
This will copy TPS Reports.odw to /home/joe/Desktop, because SCP uses your home folder as the destination unless the destination folder begins with a ‘/’.
To copy the pictures from your holiday to your website, you could do:
scp -r /media/disk/summer_pics/ mike@192.168.1.1:"/var/www/Summer 2008/"
The -r (recursive) option means to copy the whole folder and any sub-folders. You can also copy files the other way:
scp -r catbert@192.168.1.103:/home/catbert/evil_plans/ .
The ‘.’ means to copy the file to the current directory. Alternatively, you could use secret_plans instead of ‘.’, and the folder would be renamed.
Secure FTP (sftp)
Finally, if you want to look around the remote machine and copy files interactively, you can use SFTP:
This will start an SFTP session that you can use to interactively move files between computers.
SSHFS
SSHFS is a recent addition to Linux that allows you to make a remote filesystem available over SSH act as if it was inside a folder on your own system. See SSHFS for details.
GNOME
Click File -> Connect to Server. Select SSH for Service Type, write the name or IP address of the computer you’re connecting to in Server. Click Add Bookmark if you want to make the connection available later in the Places sidebar. There are options to login as a different User Name, on a different Port number, and use a different default Folder.
Files can be copied by dragging and dropping between this window and other windows.
KDE
Open Konqueror, and in the address bar type:
fish://username@server_address
Files can be copied by dragging and dropping them between this window or tab and to other windows or tabs.
Using other programs
SecPanel and PuTTY also have file transfer utilities, although they’re generally not as easy to use as the ones discussed above.
SSH/TransferFiles (последним исправлял пользователь c-71-237-198-100 2015-01-16 00:19:38)
The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details
Copying a Directory with SCP
The Unix command scp (which stands for «secure copy protocol») is a simple tool for uploading or downloading files (or directories) to/from a remote machine. The transfer is done on top of SSH, which is how it maintains its familiar options (like for specifying identities and credentials) and ensures a secure connection. It’s really helpful to be able to move around files between any machine that supports SSH.
Even if you don’t already know how to use the command, scp should be a bit more familiar to you thanks to its similarity to ssh . The biggest differences come with specifying file/directory paths. In this short article we’ll be dealing with directories specifically.
Downloading a Directory
In this use-case, we want to use scp to download a directory from a remote server to our local machine. To achieve this, we’ll use the -r flag, which tells scp to recursively copy all of the directory’s contents to our machine.
Here is an example of using scp to download a directory:
$ scp -r [email protected]:/path/to/remote/source /path/to/local/destination
Pretty simple, right? The -r flag is the only difference between downloading a single file and downloading an entire directory. With -r specified, the directory tree is recursively traversed and each file encountered is downloaded.
One important thing to note is that scp does follow symbolic links within directories, so just be aware in case this matters for your purposes.
Uploading a Directory
The same exact concepts as downloading a directory apply here as well. You’ll probably notice that the only difference is where we specify the source directory within the actual command.
Here is an example of using scp to upload a folder:
When the source path comes first, like in the example above, it is assumed to be referring to a directory on your local machine, which is then recursively transferred to the destination machine thanks to the -r flag, as before.
Conclusion
For more information on the scp command, I’d highly encourage you to check out the docs with man scp . Not only is this the fastest way to learn about the command, but it’s a good habit to get into for any Unix command.
Копирование файлов с помощью команды SCP
Передача файлов на удаленный сервер невозможна при помощи обычной физической флешки или другого устройства хранения данных, поэтому пользователям приходится использовать сетевые методы копирования и перемещения объектов. При этом важно выбрать безопасный вариант, реализация которого не займет много времени.
Один из самых надежных способов – использование консольной утилиты SCP в Linux, о которой и пойдет речь далее.
Необходимость в SSH-сервере
Перед началом разбора необходимо остановиться на таком понятии, как SSH-сервер. Он необходим для работы SCP в Linux, поскольку утилита использует именно этот протокол. Вам понадобится установить SSH-протокол и настроить его. Кроме того, важно знать пароль или ключ для подключения, о чем более детально читайте в статье по следующей ссылке.
Синтаксис и использование утилиты SCP
$ scp options user@хост1:файл user2@хост2:file
Это общий синтаксис утилиты, который необходимо использовать при вводе команды в Терминале, чтобы она выполнилась успешно и обработала ваш запрос. Как видно, ничего в этом трудного нет, однако нужно подробнее разобрать доступные опции (они же options в строке синтаксиса):
- -1 – в этом случае используется протокол SSH1;
- -2 – то же самое, но с версией SSH2;
- -B – активация пакетного режима, когда нужно передать сразу пачку файлов;
- -C – использовать сжатие при отправке;
- — l – установка ограничения в кбит/сек (значение задается пользователем вручную);
- -o – добавление опций SSH;
- -p – сохранение времени изменений файлов;
- -r – использование рекурсивного копирования папок;
- -v – переход в более развернутый режим.
Некоторые из перечисленных опций, возможно, пригодятся вам в работе, поэтому рекомендую запомнить их или где-то сохранить с понятными для вас пометками, чтобы знать, когда и что использовать. Далее я развернуто расскажу о популярных опциях и их практическом применении.
Выбор пользователя
scp /home/user/file root@timeweb:/root/
Так выглядит стандартное копирование файлов SCP без применения дополнительных опций. То есть вы указываете путь к файлу (user замените на свое имя пользователя), затем добавляете путь назначения. Одно важное замечание: у пользователя должно быть разрешение на запись в указанную папку, иначе операция прервется.
Копирование директории
Если вы ознакомились с описанным выше списком опций, то уже знаете, что SCP предлагает передачу целых директорий с использованием опции -r. В таком случае строка в Терминале обретает вид:
scp -r /home/user/photos root@timeweb:/root/
Если нужно передать все файлы из определенной папки, замените строку на следующую:
scp -r /home/user/photos/* root@timeweb:/root/
Только не забудьте изменить путь к файлу и место назначения. Как видно, добавилась только косая черта после последней директории и значок *, обозначающий копирование всех элементов.
Копирование с сервера на компьютер
Предыдущие три команды позволяли передавать файлы с локального компьютера на удаленный сервер, однако утилита поддерживает и обратное направление. В таком случае написание команды в консоли немного меняется и обретает примерно такой вид:
scp root@timeweb:/root/file /home/user/
Мы просто поменяли местами пути в команде. Вы можете использовать все те же опции, осуществляя копирование с разными атрибутами или передавая целые каталоги.
Если файлы передаются с одного удаленного сервера на другой, то их адреса указываются следующим образом:
scp root@timeweb:/home/root/index.html root@timeweb:/home/root/www/
При вводе команд обращайте внимание на одну деталь: путь к директории, в которую вы копируете данные, обязательно должен заканчиваться косой чертой, иначе произойдет перезапись файлов, и вы потеряете данные, хранящиеся в конечной папке.
Это была общая информация об утилите SCP, которая поможет скопировать файлы с компьютера на удаленный сервер либо перенести их между удаленными серверами. Используйте опции и не забывайте проверять пути, чтобы случайно не перезаписать важные файлы.