Ошибка archive is not a regular file

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?

Markus W Mahlberg's user avatar

asked Apr 9, 2015 at 19:18

Fourmicroonde's user avatar

7

I just tested this and found at least 3 situations in which scp will return not a regular file:

  1. File is actually a directory
  2. File is a named pipe (a.k.a. FIFO)
  3. 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 Mike's user avatar

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

Kenster's user avatar

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

wizurd's user avatar

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 Borshchov's user avatar

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 rahi's user avatar

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:

  1. First, compress the folder. By running the command:

    zip -r name_of_folder.zip name_of_folder

  2. 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

  3. Enter your password if it prompts you for one.

  4. 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 Adeyemo's user avatar

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

Alagie F. Nget's user avatar

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's user avatar

Necoras

6,5933 gold badges24 silver badges45 bronze badges

answered Jun 9, 2017 at 21:00

Faunus's user avatar

1

Содержание

  • Вариант 1: Повторное скачивание архива
  • Вариант 2: Исправление ассоциаций файлов
  • Вариант 3: Ручное изменение расширения файла
  • Вопросы и ответы

Ошибка Файл не является 7z архивом

Вариант 1: Повторное скачивание архива

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

  • Скачать файл заново, по возможности оптимизировав интернет-соединение.
  • Найти файл на другом сайте.

Перед попыткой повторного скачивания рекомендуется приостановить любую другую интернет-активность, которая так или иначе может повлиять на закачку. Это обновление ОС, раздача через торрент-клиент, потоковое воспроизведение видео в высоком качестве, скачивание/обновление игр через игровые клиенты и др. Если интернет сам по себе слабый, остановите и другой вид онлайн-активности, не считая мессенджеров и сервисов, практически не перетягивающих на себя ресурсы. Не забудьте выключить VPN в веб-обозревателе или на компьютере, так как особенно бесплатные их версии часто предлагают минимальную скорость обмена данными и становятся виновниками не до конца произведенных закачек.

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

Читайте также: Использование менеджера загрузок Download Master

Рекомендуется также проверить, не виноваты ли другие ваши действия в том, что через браузер все загрузки происходят медленно.

Подробнее: Причины низкой скорости скачивания в браузере

Если же после выполнения всех рекомендаций ситуация не изменилась, вполне вероятно, что вы загружаете изначально «битый» файл — то есть архив с ошибками, которые произошли в результате сжатия или при загрузке на сервер. Подобное может исправить только автор архива, пересоздав его или закачав повторно. Вам же остается либо связаться с ним, либо поискать этот же файл на другом сайте.

При условии, что загрузка происходит не в браузере, а через клиент-программу, например для установки драйвера, осуществите все рекомендации по приостановке параллельного выполнения других задач, требующих интернет-соединения. По возможности смените подключение с Wi-Fi на LAN (если вы, конечно, используете беспроводное соединение) и проверьте, насколько быстро интернет работает в целом.

Иногда неполадки со скачиванием с конкретного сайта/сервера носят временный характер, поэтому есть смысл подождать некоторое время и повторить операцию.

Вариант 2: Исправление ассоциаций файлов

Реже причиной становится слетевшие ассоциации файлов в операционной системе, из-за чего Windows не может распознать EXE-файл и выдает ошибку «Файл не является 7z архивом». При этом могут перестать запускаться и другие EXE, а не только тот, который вы пытаетесь открыть. В связи с этим следует попробовать восстановить ассоциации файлов, чтобы система снова «поняла», как ей нужно обрабатывать формат EXE. Сделать это можно по инструкции из Способа 1 статьи, ссылка на которую расположена чуть ниже. При этом можете повторить и другие советы оттуда же, если первый оказался бесполезным.

Подробнее: Что делать, если EXE-файлы не запускаются
Изменить настройки открытия в системном реестре Windows для решения проблем с EXE-файлами

Вариант 3: Ручное изменение расширения файла

Есть вероятность, что трудность заключается в расширении файла, а точнее его отсутствии или ручном изменении. Обычно помогает самостоятельное переименование расширения, но сразу же стоит отметить, что если вы уже получили файл без расширения, данный метод не гарантирует стопроцентное исправление ошибки.

  1. Первое, что вам нужно узнать — видны ли в названиях файлов их расширения («.exe», «.rar», «.mp3» и др.). Если нет, включите их отображение: откройте «Проводник», нажмите на вкладку «Вид» и вызовите окно «Параметры».
  2. Переход в Параметры папок для включения отображения расширений файлов

  3. Переключитесь на вкладку «Вид» и найдите пункт «Скрывать расширения для зарегистрированных типов файлов» и снимите галочку, после чего нажмите кнопку «ОК».
  4. Включение отображения расширений файлов через Параметры папок в Windows

  5. Теперь вернитесь к файлу, который не удается открыть, нажмите по нему правой кнопкой мыши и перейдите к переименованию.
  6. Переход к переименованию файла для изменения его расширения в Windows

  7. Если вы скачивали предположительно архив, допишите ему расширение «.rar», если это был установочный файл, допишите «.exe». После успешного переименования попытайтесь запустить файл.
  8. Переименованный файл с добавленным расширением в Windows

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

Читайте также:
Отключение антивируса
Настройка файервола в 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

Возможно, вам также будет интересно:

  • Ошибка assassins creed valhalla ce 34878 0
  • Ошибка archive data corrupted decompression fails код ошибки 11
  • Ошибка asr шкода октавия а5
  • Ошибка apt fix broken install
  • Ошибка asr фольксваген джетта 6

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии