- Move and copy files in Terminal on Mac
- Move a file or folder locally
- Copy a file or folder locally
- Copy a file or folder remotely
- kwcto / mac-file-transfer-via-command-line.md
- Question: Q: using Terminal to copy files from external usb drive to another external hdd
- Helpful answers
- Основы навигации
- Копирование
- Поиск
- Процессы
- Работа с текстом
- Жесткий диск
Move and copy files in Terminal on Mac
In Terminal, you can move and copy files locally or remotely using the mv , cp and scp command-line tools.
Tip: It’s easier to move and copy files using the Finder. See Organise files in folders.
Move a file or folder locally
In the Terminal app on your Mac, use the mv command to move files or folders from one location to another on the same computer. The mv command moves the file or folder from its old location and puts it in the new location.
For example, to move a file from your Downloads folder to a Work folder in your Documents folder:
You can also change the name of the file as it’s moved:
Copy a file or folder locally
In the Terminal app on your Mac, use the cp command to make a copy of a file.
For example, to copy a folder named Expenses in your Documents folder to another volume named Data:
The -R flag causes cp to copy the folder and its contents. Note that the folder name does not end with a slash, which would change how cp copies the folder.
Copy a file or folder remotely
In the Terminal app on your Mac, use the scp command to copy a file or folder to or from a remote computer.
scp uses the same underlying protocols as ssh .
For example, to copy a compressed file from your home folder to another user’s home folder on a remote server:
You’re prompted for the user’s password.
The -E flag preserves extended attributes, resource forks and ACL information.
The -r flag, which isn’t used in this example, causes scp to copy a folder and its contents.
Источник
kwcto / mac-file-transfer-via-command-line.md
Mac File Transfer via Single User Mode / Command Line
- Start in Single User Mode by holding down Command-S when starting the Mac.
- Commands can also be typed via Terminal app when OS X is running.
Terminal Command Workflow
- Type diskutil list to view available drives
- Type diskutil mount /dev/disk1s2 (Disk 1, Partition Scheme 2 — may be different on your Mac) to gain read/write access on that disk.
- Type cd /Volumes to switch current folder to Volumes where Mac OS lists all mounted drives.
- Type ls to list contents of Volumes folder.
- Type mkdir to create a new folder (on the USB drive)
- The cp -a command copies files/folders from one path to another.
Start in Single-User Mode by holding Command-S as mentioned above You type -> diskutil list
/dev/disk0 (Physical Disk #1: Macintosh HD)
/dev/disk1 (Physical Disk #2: PIZZA_PIZZA_256GB)
You type -> diskutil mount /dev/disk1s2
You type -> cd /Volumes
You type -> ls
You type -> cd /Volumes/PIZZA_PIZZA_256GB
You type -> mkdir RecoveredFiles
You type -> cd RecoveredFiles
You type -> cp -a
Which should copy the entire Mac Photos folder to /Volumes/PIZZA_PIZZA_256GB/RecoveredFiles/Photos
- An empty line after running the cp command indicates success
- Copy folder and contained files together using cp -a /Source/FolderName /Destination/FolderName
- Copy single files without the -a using cp /Source/file.jpg /Destination/file.jpg
/Photos is the same as /Users/alex/Photos
More copying examples
You type -> cp
/Photos/myphoto.jpg Photos/myphoto.jpg
You type -> cp -a
/Documents /Volumes/PIZZA_PIZZA_256GB/RecoveredFiles/Documents
You type -> cp -a
Источник
Question: Q: using Terminal to copy files from external usb drive to another external hdd
New to using Terminal so be gentle. I keep my lightroom catalog on a little external thumbdrive on my macair. Now the thumbdrive does not appear in the Finder but it is present in Disk Utility and in Terminal. So I want to copy my lightroom catalog as well as the few photos saved to this thumbdrive to another external hd so I can attempt to reformat this drive, which may solve the Finder issue.
My question is, I am very new to Terminal and all I know is that I want to COPY the files not MOVE the files. I don’t know how to properly write the command lines to tell Terminal where my Directories are and where I want to send them (so i don’t know how to indicate paths) and i don’t know the proper Terminal to execute a Copy Directory.
MacBook Air, iOS 10.1.1
Posted on Jan 5, 2017 4:10 AM
Helpful answers
Restore will not erase the Source. It will erase the destination. I’m not sure where you got that idea from.
I gave you one Finder option which will work if the drive is visible in Terminal. The rest are just other GUI options
cp -R source_dir target_directory
Don’t put a trailing / on source_dir so it will copy that folder also.
That’s the best I can offer since you didn’t give the rest of the information.
Now, not knowing anything about a Lightroom catalog structure, there may be other options required in the copy command to pull it over correctly. If the catalog contains hard links, then you can’t use copy.
Jan 5, 2017 5:40 AM
The paths in Terminal should be
in each case. If there is a space in a name it should be preceded by a backslash — \
If you have more than directory at root level you could presumably just leave that bit off. You mentioned in your first post that you wanted to format the thumb drive — you are aware that this will erase its contents?
Jan 5, 2017 6:36 AM
There’s more to the conversation
Loading page content
Page content loaded
Before going into Terminal, in the Finder look at menu Finder>Preferences; select ‘Sidebar’ and under ‘Devices’ make sure ‘External Disks’ are checked. Then open a Finder window and see if your thumb drive appears in the sidebar.
Jan 5, 2017 4:13 AM
everything is checked, the other external drive i’m trying to transfer to appears in Finder.
Jan 5, 2017 4:18 AM
Open Terminal and type man cp . You will need to keep hitting the return key to see more of the article. It looks as if cp -R may be the instruction you need but read the manual to check.
Jan 5, 2017 4:27 AM
man cp is tmi for someone who only ever used Terminal to disable Apple Photos from launching and I only did that by literally copying and pasting code. Which is what I’m looking for here.
Jan 5, 2017 4:41 AM
In Disk Utility make sure the drive is mounted. You may also want to verify the drive. If you can get it mounted and displayed I would just use Finder to copy the files. Dragging from one drive to another copies files, not move.
Jan 5, 2017 4:47 AM
He says that the drive doesn’t appear in the Finder, though it does in Disk Utility and Terminal, thus making simple drag and drop impossible.
loosecaboose — have you tried ‘Repair disk’ in Disk Utility?
Jan 5, 2017 4:50 AM
i’m looking for a solution using Terminal. OS X ie Finder is not an option and Disk Utility repair says there is nothing wrong with the drive and I see the data is on the drive. I need lines of code in Terminal to pull the data off the drive and transfer it to another drive so I can reformat my drive.
Jan 5, 2017 4:57 AM
man cp is tmi for someone who only ever used Terminal to disable Apple Photos from launching and I only did that by literally copying and pasting code. Which is what I’m looking for here.
Use another GUI tool to copy the disk, then. If it shows in Disk Utility and is accessible in Terminal, there is no reason short of some setting that is preventing it from showing in the Finder (Go Computer, perhaps).
Carbon Copy Cloner or SuperDuper would likely be able to see it if it is mounted.
Or, use the Restore function in Disk Utility to copy one to the other. Select the empty drive in Disk Utility and click the Restore button. Set the source disk in the popup menu. That will completely replace the contents of the destination drive with the contents of the source drive. The destination would have to be at least as big as the source.
If you only know how to copy and paste «some code,» then you will likely end up wiping out your drive instead of copying it. Then, you’d just blame us.
We’d have to know the name of each of the volumes as shown in /Volumes to provide the necessary code for you to copy and paste.
Источник
Основы навигации
команда cd. Одна из основных команд, позволяющих осуществлять навигацию по различным директориям. Если, открыв терминал, вы сразу хотите оказаться в определенной директории, скажем, в Documents, достаточно набрать в терминале cd Documents.
команда, при помощи которой вы переходите в свою директорию. Для примера, если вы решаете перейти в каталог, где расположены ваши документы, то следующая команда будет выглядеть так: cd
cd — позволяет вернуться в предыдущую директорию.
cd .. позволяет вам подняться в вышестоящую директорию.
ls выдает список имен файлов в указанной директории
ls -f показывает файлы с их расширением.
ls -a перечисляет все файлы, включая скрытые.
ls -lo кроме перечисления существующих файлов показывает также их права доступа и дату их создания. Если вы хотите, чтобы были перечислены только файлы, начинающиеся с определенной буквы, например, с Z, наберите ls Z*. Учтите, команда чувствительна к регистру, и если какие-то файлы имеют в начале заглавную Z, а вы набрали обычную z, вы их просто не увидите.
mkdir создает новую директорию. Для примера: набрав команду : mkdir new, вы создадите новую директорию с названием new.
rm удалить файл.
rmdir удалить директорию.
rm new.txt : команда удалит файл new.txt
rmdir new — удаляет директорию с именем new.
Если вы хотите удалить директорию, которая не является пустой, вы либо должны в начале удалить все ее содержимое, либо использовать команду rm -R
rm -R new : удаляет директорию new со всем ее содержимым.
clear — очищает экран терминала. В принципе, иногда достаточно просто сделать «правый клик» на окне терминала и выбрать в контекстном меню — Clear Scrollback.
script — позволяет сохранить в текстовый файл все введенные вами с клавиатуры символы. На практике — чрезвычайно удобная опция, позволяющая вам получить полнейший протокол всей вашей сессии. В файле также будет указаны ее точные дата и время.
Script done on Sat Feb 10 18:21:32 2007
файл будет сохранен с именем typescript в вашей домашней директории.
bc — команда, которая выведет на экран терминала простейший консольный калькулятор.
df — простая команда, которая покажет вам объемы вашего дискового пространства, включая сетевые диски.
du — список всех папок, имеющихся на вашем системном разделе.
Копирование
Копирование файлов и папок, осуществляется при помощи команды cp. Допустим, вы хотите скопировать файл note.txt с рабочего стола в каталог Documents. В этом случае потребуется набрать в терминале cp note.txt
Необходимо учитывать, что если файл с таким же именем существует на новом месте, он будет удален и заменен скопированным файлом без предупреждений и возможности восстановления.
Если при этом вы желаете не просто скопировать файл, а скопировать и сохранить его уже с новым названием (для примера возьмем в качестве нового названия new.txt), то требуемая команда будет выглядеть следующим образом — cp note.txt
/Documents/new.txt. И в вашей папке появится файл new.txt, являющийся копией файла note.txt с рабочего стола.
Для того, чтобы скопировать нужный файл в исходный каталог, но уже с новым именем, достаточно будет набрать cp note.txt new.txt
cp -R Documents «Documents backup» — команда, посредством которой вы сохраняете резервную копию всей вашей директории Documents. Кавычки необходимы, так как в названии директории присутствует пробел.
sudo cp -Rp /Users «/Users backup» — команда позволяет скопировать всю директорию /Пользователи (включая все домашние папки, находящиеся внутри), сохраняя при этом как можно больше файловой информации (принадлежность, права и т.д., но не ветвь ресурса) с названием Users backup. Вы должны выполнять эту команду из под учетной записи администратора, так, в данном примере используется sudo, позволяющая получить временный доступ с правами root. Если вы выполняете команду из-под учетной записи пользователя, вас попросят ввести пароль администратора.
ditto позволяет скопировать директорию, но с сохранением атрибутов скрытых файлов.
ditto Documents «Documents backup» копирует всю директорию под именем «Documents» и называет копию директории «Documents backup».
mv — переименование файлов. Для примера, набрав в терминале mv new old, вы переименуете файл или директорию с названием new в old. А следующей командой: mv old
/Documents — вы переместите его из текущей директории в вашу директорию Documents.
Поиск
find — поиск файлов, соответствующих заданным вами критериям.
find / -name (имя файла без скобок) : команда осуществит поиск нужного вам файла по всей файловой структуре, включая все смонтированные диски (в том числе и сетевые) и отобразит полный путь к нему.
find -x/ -name (имя файла без скобок) : то же самое, но поиск будет осуществляться исключительно на загрузочном диске вашей системы.
find . -name ‘*имя файла*’ : (с сохранением указанного синтаксиса) — поиск будет осуществлен в текущем каталоге и всех его подкаталогах.
find . -mtime -(здесь нужная вам цифра, вводить без скобок) : эта команда, как и предыдущая, осуществляет поиск в текущем каталоге и всех его подкаталогах, но ее отличие в том, что указав, к примеру, цифру 3 (find . -mtime -3) команда выдаст вам все файлы, которые были изменены в течение последних трех дней. Указав 0, команда найдет только те файлы, дата которых была изменена.
Процессы
ps -x команда, выдающая в терминале список процессов текущего пользователя.
ps -ax показывает список всех процессов
ps — aux показывает список всех процессов, запущенных в системе на данный момент, а также дополнительную информацию о них, включая загрузку процессора, время и пр.
top выдает список основных задействованных процессов и постоянно обновляемую информацию о них. Нагрузка на процессор, размер задействованной памяти, время и пр.
top -us5 то же самое, но с сортировкой процессов, по объему их нагрузки на процессор.
kill — команда, «убивающая» зависший процесс или посылающая ему сигнал.
sync — команда, принудительно записывающая содержимого дискового кэша на жесткий диск.
Пример: набираем в терминале команду top, в появившемся списке процессов выбираем нужный, скажем, процесс 2200, (в моем случае им оказался совершенно ненужный мне AppleSpell) нажимаем Q для выхода из меню — и после kill 2200. Еще раз набираем top — и убеждаемся, что больше упомянутый 2200-го процесс больше не фигурирует в списке запущенных процессов.
lsof — команда, показывающая список открытых файлов в вашей системе, и файлов, к которым в данный момент обращаются прикладные программы, для примера, если у вас запущен торрент клиент, команда покажет даже те файлы, которые вы скачиваете в данный момент, или раздаете. Естественно, чтобы увидеть полный список, нужно обладать правами администратора.
sudo lsof — список открытых файлов, включая всю систему. Требуется пароль администратора.
И наконец, команда sudo lsof -i — команда, позволяющая вам увидеть все открытые сетевые соединения в вашей системе.
Работа с текстом
pico и nano — простейшие текстовые редакторы для терминала. Довольно ограничены по функционалу. Для выхода из pico или nano нажмите сочетание CTRL+X
more или less — отображает содержимое текстового файла по одной странице. Для перехода на следующую нажмите пробел. Не работает с документами Word, PDF, RTF и любыми файлами отличным от txt формата.
emacs — GNU Emacs — довольно продвинутый редактор, разработанный под X Window и теряющий часть своего функционала при запуске в терминале. Но несмотря на это, позволяет видеть одновременно несколько файлов, перемещать текст между файлами и редактировать во время работы команд оболочки. Программа, вполне заслуживающая отдельного обзора, поэтому здесь мы не будем подробно останавливаться на нюансах его настройки и использования.
Жесткий диск
diskutil выдает список всех возможных команд для операций с вашим жестким диском. От просто просмотра командой diskutil list до таких операций, как монтирование разделов, починка всем знакомых «пермишонов» или формата. Говоря проще, перед вами все опции (на самом деле их даже больше) уже знакомой вам Disk Utility с той разницей, что все действия вы выполняете через интерфейс командной строки. Вот пример лишь нескольких команд, предлагаемых вам diskutil
diskutil resizeVolume позволяет изменять размер выбранного раздела
diskutil partitionDisk позволяет совершать операции над диском и его отдельными разделами. Форматирование, выбор файловой системы и пр.
diskutil eraseDisk стирает информацию с вашего жесткого диска.
diskutil info / выводит информацию о загрузочном разделе вашего диска. Его имя, тип файловой системы, общий размер, количество общего и свободного пространства и пр.
diskutil info /Volumes/здесь имя раздела то же самое, но для любого другого, смонтированного, но незагрузочного раздела вашего жесткого диска.
sudo diskutil repairPermissions / еще одна команда для «починки пермишнов» на загрузочном диске с вашей MacOS X. При ее выполнении от вас потребуют ввести пароль администратора.
sudo passwd root — команда, которая может вам понадобиться только в одном случае — если вы забыли root пароль, пароль администратора.
ifconfig — команда, которая дает больше возможностей для контроля параметров ваших сетевых соединений, но имеет один ощутимый минус по сравнению с настройкой через панель System Preference — после перезагрузки компьютера, сделанные вами изменения часто теряются.
ftp — утилита и одновременно протокол (File Transfer Protocol) для передачи файлов. После установления связи с другой машиной (ftp-сервером) вам, скорее всего, будет предложено ввести свое имя (login) и пароль (password) на этой машине. После подключения, Вы сможете с помощью команды «cd » перемещаться по директориям машины-сервера, с помощью «ls» просматривать содержимое выбранных каталогов, с помощью команды «get » перекачивать файлы с сервера на клиентскую машину (в данном случае клиентом будет узловая машина), а с помощью команды «put «, наоборот, переслать файл с клиентской машины на сервер. Для окончания сеанса связи служит команда «quit». Если вы хотите, чтобы передача данных происходила в фоновом режиме, можно воспользоваться командой dlftp
host — выполняет поиск с помощью службы DNS по заданному имени или IP адресу и выдает информацию о конкретном узле Интернета.
nslookup — Выполняет «поиск имени узла» по заданному IP адресу.
dig — несет те же функции.
telnet — команда, запускающая утилиту и протокол для подключения к удаленной системе.
rlogin — команда расшифровывается как Remote login и инициирует сессию с удаленной системой. По сравнению с ssh — небезопасна в использовании.
rsh (Remote shell) — исполняет команду на удаленной системе.
rcp (Remote copy) — копирование файлов между двумя машинами через сеть. Как и предыдущие r* команды, небезопасна в использовании и по возможности от нее стоит лучше воздержаться в пользу ssh.
ssh (Secure shell) — устанавливает сеанс связи и выполняет команды на удаленной системе. Выступает в качестве защищенной замены для таких команд как telnet, rlogin, rcp и rsh
write — команда запускает утилиту, которая позволяет передать текст сообщения на другой терминал. Работает в интерактивном режиме, поэтому, как правило, не употребляется в сценариях.
finger — Возвращает информацию о пользователях в сети. По требованию эта команда может выводить содержимое ряда файлов, указанного пользователя. В крупных сетях данная служба часто отключается по соображениям безопасности.
whois — команда, отвечающая за поиск в Domain Name System — DNS. При использовании ключа -h вы указываете, на какой именно из существующих whois серверов будет отправлен ваш запрос.
команда ping, в отличие от множества уже приведенных здесь команд, знакома и большинству Windows — пользователей. Чаще всего она применяется как инструмент для диагностики соединений, ее задача — передача пакета ICMP echo_request.
reboot — перезагрузка компьютера
shutdown -h now — команда, выключающая ваш компьютер без временной задержки и ненужных вопросов.
(Две последние команды выполняются исключительно из-под аккаунта администратора.)
Конечно, немногие пользователи используют возможности терминала в повседневной жизни. Кому-то это кажется древним и отжившим анахронизмом, кого-то отталкивает необходимость запоминать довольно большой список необходимых команд, в то время, когда большинство требуемых задач можно выполнить при помощи обычной мыши. Но, раз начав работать с терминалом, вы сами довольно быстро оцените возможности, которые он вам предоставляет.
Источник