Відповіді:
Звичайний файл - це файл, який не є каталогом або більш екзотичними типами "спеціальних" файлів, таких як названі труби, пристрої, розетки, двері тощо. Символічні посилання також не є звичайними файлами, але вони поводяться як їх мета, коли він програма отримує доступ до вмісту файлу.
Ви передали root@IP:
як джерело копії та /path/to/picture.jpg
як місце призначення. Джерелом є домашній каталог користувача root
на машині IP
. Це корисно як місце призначення, але не як джерело. Що ви ввели, потрібно скопіювати каталог у файл; scp
не може скопіювати каталог, якщо ви не попросите рекурсивну копію з -r
опцією (і вона відмовиться перезаписувати наявний файл у каталог навіть з -r
, але тихо перезаписатиме звичайний файл, якщо джерело був звичайним файлом).
Якщо /path/to/picture.jpg
це шлях на віддаленій машині файлу, який ви хочете скопіювати, вам потрібно докласти ім'я файлу до специфікації хоста. Це двокрапка, :
яка відокремлює ім'я хоста від віддаленого шляху. Вам також потрібно вказати місце призначення.
scp root@IP:/path/to/picture.jpg /some/destination
Якщо ви хочете скопіювати локальний файл /path/to/picture.jpg
на віддалений хост, вам потрібно поміняти аргументи. Команди копіювання Unix ставлять перше джерело (джерела), а місце призначення - останнє.
scp /path/to/picture.jpg root@IP:
Якщо ви бажаєте /path/to/picture.jpg
локально скопіювати віддалений файл у те саме місце, вам потрібно повторити шлях. Ви можете мати, щоб ваша оболонка робила для вас повторювану роботу (менше набирати текст, менше читати).
scp root@IP:/path/to/picture.jpg /path/to/picture.jpg
scp {root@IP:,}/path/to/picture.jpg
Копіюючи каталог, слід скористатися -r
опцією:
scp -r root@IP:/path/to/file /path/to/filedestination
випуск синтаксису - видаліть пробіл між ними
root @ IP:
і
/ шлях
scp
.
not a regular file
-r
як scp аргумент.
scp root@IP:/path/to/file /path/to/filedestination
Команда зверху копіює файл з віддаленого сервера на комп'ютер. Якщо ви введете лише текст, scp root@IP:
він спробує скопіювати домашній каталог root (scp home home .
).
Тому потрібно вказати точний шлях до файлу
Ви отримуєте цю помилку, оскільки ви намагаєтесь скопіювати папку, а не файл, а значить, слід копіювати файли рекурсивно за допомогою -r
параметра
Використовуйте команду нижче, коли копіюєте файли з віддаленої машини на локальну машину
scp -r root@RemoteIP:/path/to/file /path/to/filedestination
АБО
При копіюванні файлів з локальної машини на віддалену машину
scp -r /path/to/file root@RemoteIP:/path/to/filedestination
scp root@IP:/path/to/*.jpg /path/to/filedestination/
Це буде працювати (принаймні, на моєму Mac)