Linux scp copy folder

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:

Читайте также:  Behringer u phoria umc204hd linux

Источник

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

Читайте также:  Посмотреть пользователей ftp linux

Источник

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-протокол и настроить его. Кроме того, важно знать пароль или ключ для подключения, о чем более детально читайте в статье по следующей ссылке.

Читайте также:  Suse linux 11 vmware tools

Синтаксис и использование утилиты 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

Копирование директории

Если вы ознакомились с описанным выше списком опций, то уже знаете, что SCP предлагает передачу целых директорий с использованием опции -r. В таком случае строка в Терминале обретает вид:

scp -r /home/user/photos root@timeweb:/root/

Копирование папки при помощи утилиты SCP

Если нужно передать все файлы из определенной папки, замените строку на следующую:

scp -r /home/user/photos/* root@timeweb:/root/

Только не забудьте изменить путь к файлу и место назначения. Как видно, добавилась только косая черта после последней директории и значок *, обозначающий копирование всех элементов.

Копирование всех файлов в папке SCP

Копирование с сервера на компьютер

Предыдущие три команды позволяли передавать файлы с локального компьютера на удаленный сервер, однако утилита поддерживает и обратное направление. В таком случае написание команды в консоли немного меняется и обретает примерно такой вид:

scp root@timeweb:/root/file /home/user/

Копирование с удаленного сервера на компьютер через утилиту SCP

Мы просто поменяли местами пути в команде. Вы можете использовать все те же опции, осуществляя копирование с разными атрибутами или передавая целые каталоги.

Если файлы передаются с одного удаленного сервера на другой, то их адреса указываются следующим образом:

scp root@timeweb:/home/root/index.html root@timeweb:/home/root/www/

При вводе команд обращайте внимание на одну деталь: путь к директории, в которую вы копируете данные, обязательно должен заканчиваться косой чертой, иначе произойдет перезапись файлов, и вы потеряете данные, хранящиеся в конечной папке.

Это была общая информация об утилите SCP, которая поможет скопировать файлы с компьютера на удаленный сервер либо перенести их между удаленными серверами. Используйте опции и не забывайте проверять пути, чтобы случайно не перезаписать важные файлы.

Источник

Оцените статью
Adblock
detector