I have a problem when using scp on Linux, it says «not a regular file». I looked at other questions/answers about that, but I can’t find out what’s wrong…
I wrote:
scp aa@aa:/home/pictures/file.fits .
to copy file.fits
from aa@aa
, /home/pictures
to the current directory. I also tried without using /home/
, but it didn’t work neither…
Do you understand what’s wrong?
asked Apr 9, 2015 at 19:18
7
I just tested this and found at least 3 situations in which scp will return not a regular file
:
- File is actually a directory
- File is a named pipe (a.k.a. FIFO)
- File is a device file
Case #1 seems most likely. If you meant to transfer an entire directory structure with scp
use the -r
option to indicate recursive copy.
answered Apr 9, 2015 at 20:11
Multimedia MikeMultimedia Mike
12.6k5 gold badges46 silver badges62 bronze badges
4
«/home/pictures/file.fits» must name an actual filesystem object on the remote server. If it didn’t, scp
would have given a different error message.
I see that FITS is an image format. I suppose «/home/pictures/file.fits» is the name of a directory on the remote server, containing FITS files or something like that.
To copy a directory with scp
, you have to supply the «-r» flag:
scp -r aa@aa:/home/pictures/file.fits .
answered Apr 9, 2015 at 20:15
KensterKenster
23k21 gold badges80 silver badges106 bronze badges
1
One way this error can occur is if you have a space before the first path like below:
scp myUserName@HostName: /path/to/file /path/to/new/file ^
To fix, just take the space out:
scp myUserName@HostName:/path/to/file /path/to/new/file
answered Sep 3, 2015 at 22:32
wizurdwizurd
3,5013 gold badges33 silver badges50 bronze badges
By being teaching lots of people of basic sysadmin I must say in 90% cases it is because they are trying to copy directory without passing -r
source
Just use -r flag. E.g to copy from remote to local:
scp -r root@IP:/path/on/server/ /path/on/local/pc
answered May 15, 2021 at 21:24
Ivan BorshchovIvan Borshchov
2,9735 gold badges39 silver badges60 bronze badges
simple steps you need to follow
1)scp -r user@host:/var/www/html/projectFolder /var/www/html/localsystem-project-folder
2)scp -r user@host:/var/www/html/projectFolder/filename.php /var/www/html/localsystem-project-folder/
here -r is for recursive traverse the director will help you without any error.
answered Feb 19, 2019 at 7:19
niraj rahiniraj rahi
571 silver badge5 bronze badges
It is possible that you are working with a directory/folder.
If this is the case, here is what you want to do:
-
First, compress the folder. By running the command:
zip -r name_of_folder.zip name_of_folder
-
Then use the scp command normally to copy the file to your destination:
scp path/to/name_of_folder.zip server:localhost:/path/to/name_of_folder.zip
-
Enter your password if it prompts you for one.
-
Unzip the name_of_folder.zip with this command:
unzip name_of_folder.zip
That is it, you now have your folder in the destination system. By the way, this is for zip compression.
NOTE: If you are on Mac OS and you don’t want to see resource files such as _MACOSX, you may run:
**zip -r -X name_of_folder.zip name_of_folder**
Meaning the above command should be used instead of that in step 1 above.
answered Sep 14, 2019 at 3:01
Olu AdeyemoOlu Adeyemo
8059 silver badges15 bronze badges
You can use the recursive (-r) flag to copy the files.
get -r folderName
answered Dec 29, 2021 at 12:12
It doesn’t work because you need the precise the name of copied file ;
So use this command like this :
scp aa@aa:/home/pictures/file.fits ./file.fits
You can rename your file too like this :
scp aa@aa:/home/pictures/file.fits ./newNameFile.fits
Necoras
6,5933 gold badges24 silver badges45 bronze badges
answered Jun 9, 2017 at 21:00
1
Содержание
- Вариант 1: Повторное скачивание архива
- Вариант 2: Исправление ассоциаций файлов
- Вариант 3: Ручное изменение расширения файла
- Вопросы и ответы
Вариант 1: Повторное скачивание архива
В подавляющем большинстве случаев рассматриваемая ошибка появляется именно из-за того, что сам архив был скачан не до конца. При этом формально браузер может вам сообщить, что интересующий файл был загружен, но по факту либо небольшие проблемы с соединением возникли в процессе скачивания, либо на сервере изначально находится поврежденный файл. Соответственно, у пользователя есть два выхода:
- Скачать файл заново, по возможности оптимизировав интернет-соединение.
- Найти файл на другом сайте.
Перед попыткой повторного скачивания рекомендуется приостановить любую другую интернет-активность, которая так или иначе может повлиять на закачку. Это обновление ОС, раздача через торрент-клиент, потоковое воспроизведение видео в высоком качестве, скачивание/обновление игр через игровые клиенты и др. Если интернет сам по себе слабый, остановите и другой вид онлайн-активности, не считая мессенджеров и сервисов, практически не перетягивающих на себя ресурсы. Не забудьте выключить VPN в веб-обозревателе или на компьютере, так как особенно бесплатные их версии часто предлагают минимальную скорость обмена данными и становятся виновниками не до конца произведенных закачек.
Возможно, что в нестабильном скачивании файла виноват хостинг, где хранится архив. Попробовать свести к минимуму вероятные разрывы связи можно, используя сторонние менеджеры загрузок типа Download Master.
Читайте также: Использование менеджера загрузок Download Master
Рекомендуется также проверить, не виноваты ли другие ваши действия в том, что через браузер все загрузки происходят медленно.
Подробнее: Причины низкой скорости скачивания в браузере
Если же после выполнения всех рекомендаций ситуация не изменилась, вполне вероятно, что вы загружаете изначально «битый» файл — то есть архив с ошибками, которые произошли в результате сжатия или при загрузке на сервер. Подобное может исправить только автор архива, пересоздав его или закачав повторно. Вам же остается либо связаться с ним, либо поискать этот же файл на другом сайте.
При условии, что загрузка происходит не в браузере, а через клиент-программу, например для установки драйвера, осуществите все рекомендации по приостановке параллельного выполнения других задач, требующих интернет-соединения. По возможности смените подключение с Wi-Fi на LAN (если вы, конечно, используете беспроводное соединение) и проверьте, насколько быстро интернет работает в целом.
Иногда неполадки со скачиванием с конкретного сайта/сервера носят временный характер, поэтому есть смысл подождать некоторое время и повторить операцию.
Вариант 2: Исправление ассоциаций файлов
Реже причиной становится слетевшие ассоциации файлов в операционной системе, из-за чего Windows не может распознать EXE-файл и выдает ошибку «Файл не является 7z архивом». При этом могут перестать запускаться и другие EXE, а не только тот, который вы пытаетесь открыть. В связи с этим следует попробовать восстановить ассоциации файлов, чтобы система снова «поняла», как ей нужно обрабатывать формат EXE. Сделать это можно по инструкции из Способа 1 статьи, ссылка на которую расположена чуть ниже. При этом можете повторить и другие советы оттуда же, если первый оказался бесполезным.
Подробнее: Что делать, если EXE-файлы не запускаются
Вариант 3: Ручное изменение расширения файла
Есть вероятность, что трудность заключается в расширении файла, а точнее его отсутствии или ручном изменении. Обычно помогает самостоятельное переименование расширения, но сразу же стоит отметить, что если вы уже получили файл без расширения, данный метод не гарантирует стопроцентное исправление ошибки.
- Первое, что вам нужно узнать — видны ли в названиях файлов их расширения («.exe», «.rar», «.mp3» и др.). Если нет, включите их отображение: откройте «Проводник», нажмите на вкладку «Вид» и вызовите окно «Параметры».
- Переключитесь на вкладку «Вид» и найдите пункт «Скрывать расширения для зарегистрированных типов файлов» и снимите галочку, после чего нажмите кнопку «ОК».
- Теперь вернитесь к файлу, который не удается открыть, нажмите по нему правой кнопкой мыши и перейдите к переименованию.
- Если вы скачивали предположительно архив, допишите ему расширение «.rar», если это был установочный файл, допишите «.exe». После успешного переименования попытайтесь запустить файл.
В редких случаях может помочь отключение антивируса (преимущественно при установке драйвера, который защитное приложение хочет заблокировать) или файервола.
Читайте также:
Отключение антивируса
Настройка файервола в Windows 10 / Windows 7
@Grimler91 2 outputs are producing at the time i checked termux-info
1- Termux-api has stopped which don’t know why. Everything seems updated and running normal.
@localhost ➜ ~ termux-info
Updatable packages:
All packages up to date
System information:
Linux localhost 3.4.67 #1 SMP PREEMPT Sat Dec 13 20:28:37 CST 2014 armv7l Android
Termux-packages arch:
arm
Android version:
7.1.2
Обычный файл — это файл, который не является каталогом или более экзотическими видами «специальных» файлов, таких как именованные каналы, устройства, сокеты, двери и т. Д. Символические ссылки также не являются обычными файлами, но они ведут себя как цель, когда приложение обращается к содержимому файла.
Вы передали 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
A regular file is a file that isn’t a directory or more exotic kinds of “special” files such as named pipes, devices, sockets, doors, etc. Symbolic links are not regular files either, but they behave like their target when it an application is accessing the content of the file.
You passed root@IP:
as the source of the copy and /path/to/picture.jpg
as the destination. The source is the home directory of the user root
on the machine IP
. This is useful as a destination, but not as a source. What you typed required to copy a directory onto a file; scp
cannot copy a directory unless you ask for a recursive copy with the -r
option (and it would refuse to overwrite an existing file with a directory even with -r
, but it would quietly overwrite a regular file if the source was a regular file).
If /path/to/picture.jpg
is the path on the remote machine of the file you want to copy, you need to stick the file name to the host specification. It’s the colon :
that separates the host name from the remote path. You’ll need to specify a destination as well.
scp root@IP:/path/to/picture.jpg /some/destination
If you want to copy the local file /path/to/picture.jpg
to the remote host, you need to swap the arguments. Unix copy commands put the source(s) first and the destination last.
scp /path/to/picture.jpg root@IP:
If you want to copy the remote file /path/to/picture.jpg
to the same location locally, you need to repeat the path. You can have your shell does the work of repeating for you (less typing, less readability).
scp root@IP:/path/to/picture.jpg /path/to/picture.jpg
scp {root@IP:,}/path/to/picture.jpg