LINUX.ORG.RU

Скопировать папку с содержимым в /dev/null с прогресс-баром

 


0

1

Linux Mint 18.3

Пробовал так:

and@and-work ~ $ gcp -rf 0 /dev/null
Traceback (most recent call last):
  File "/usr/bin/gcp", line 679, in <module>
    success,message = gcp.parseArguments()
  File "/usr/bin/gcp", line 657, in parseArguments
    self.__checkArgs(options, source_dir, args)
  File "/usr/bin/gcp", line 309, in __checkArgs
    self.__appendDirToList(abspath, full_dest_path, options)
  File "/usr/bin/gcp", line 263, in __appendDirToList
    os.makedirs(dest_path) #TODO: check permissions
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 20] Not a directory: '/dev/null/0'
and@and-work ~ $ 

Пробовал так:

and@and-work ~ $ sudo rsync -ah --progress 0 /dev/null
sending incremental file list
ERROR: destination must be a directory when copying more than 1 file
rsync error: errors selecting input/output files, dirs (code 3) at main.c(640) [Receiver=3.1.1]
and@and-work ~ $

Как мне скопировать мою папку «0»?



Последнее исправление: andman (всего исправлений: 1)
Ответ на: комментарий от Deleted
and@and-work ~ $ tar -c -f /home/and/0/ | pv > /dev/null
tar: Робкий отказ от создания пустого архива
Попробуйте «tar --help» или «tar --usage» для
получения более подробного описания.
   0 B 0:00:00 [   0 B/s] [<=>                                                 ]
and@and-work ~ $
andman
() автор топика
Ответ на: комментарий от Deleted

Спасибо, действительно ошибся. А чем плохо использовать слово «Папка». Почему правильно называть «Директория» а не например «Каталог»?

andman
() автор топика
Ответ на: комментарий от andman

Потому что «каталог». Директория — бессмысленная транслитерация с «directory» (хотя у этого слова есть корректный перевод), папка — калька с вендового «folder».

intelfx ★★★★★
()
Ответ на: комментарий от Deleted

Прогресс-бар в tar ущербный. А можно чтоб были нормальные проценты по копированию каждого файла?

andman
() автор топика
Ответ на: комментарий от vodz

Хорошо, а как тогда не с помощью tar решить мою задачу? Пробовал через rsync, gcp - не получается, подскажите как?

andman
() автор топика
Ответ на: комментарий от andman

Хорошо, а как тогда не с помощью tar решить мою задачу?

А почему конкретная утилита должна решать ваше хочушку? Задача то в чём? Узнать какие файлы большие в указанном каталоге? В конце концов можете копировать по файлам find . -type f -exec echo '{}' \; -exec cat '{}' \; | pv > /dev/null

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от vodz

Задача в том, чтобы операционная система прочитала весь мой каталог, что бы при этом отображался прогресс чтения каждого файла в отдельности. Ни больше ни меньше.

Мне не нужно знать какие там файлы большие, а какие нет, мне нужно именно то, что я указал выше.

andman
() автор топика
Ответ на: комментарий от andman

а если ты указал какое-то безграмотное говно?
типа «мне нужно чтобы постух оценил пятую ногу моей коровы».
что изволишь тебе советовать?

если ты считаешь свой запрос корректным, то будь добр определи понятия которые в нём используешь. потому что например что такое «операционная система прочитала весь мой каталог» знаешь видимо только ты. Может ОС в твоём понимании это что-то типа кота на цепи вокруг дуба. И он читает. Но мы тут понимаем ОС по-другому, и что значит заставить ОС читать файл можно понимать очень по-разному. Хотя бы потому ОС этого не делает в принципе. Опять же всё зависит от определения ОС, файла и процесса чтения.

mos ★★☆☆☆
()
Ответ на: комментарий от andman

Так, уже лучше. Теперь осталось расписать, зачем это делается.

anonymous
()
Ответ на: комментарий от andman

find . -type f -printf "%f\n" -exec dd if={} of=/dev/null status=progress \;

anonymous
()
Ответ на: комментарий от mos

Под операционной системой я понимаю следующее: комплекс взаимосвязанных программ, предназначенных для управления ресурсами компьютера и организации взаимодействия с пользователем. В моём случае (Linux and-work 4.10.0-38-generic #42~16.04.1-Ubuntu SMP Tue Oct 10 16:32:20 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux)

Под каталогом я понимаю это: список объектов файловой системы (файлов и подкаталогов) с указанием их месторасположения на устройстве хранения информации и прочими метаданными.

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

Попробую сформулировать свою задачу снова:

Средствами имеющимися в моей операционной системе с использованием эмулятора терминала последовательно прочитать содержимое файлов каталога ~/0 , а так же файлов всех вложенных каталогов с отображением прогресса чтения (например в процентах) каждого файла в отдельности.

andman
() автор топика
Ответ на: комментарий от andman

при чем тут новичек и как ориентируешься? тебе кто-то предъявляет за то что ты новичек? где кто и когда? покажи мне ***!!!

разбирайся и не тупи.

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

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

или в другой теме ты сломал систему и просишь чтобы тебе пальцем в небо ткнули люди сидящие за тысячи км от твоего нещастного компа как тебе установить либру. да как как не делать глупостей и всё само будет ставится.

совет по итогу один - не тупить.
если это невыполнимо, то валить на винфак.

совет впрочем относится и к 99% местных ламеров.

mos ★★☆☆☆
()
Ответ на: комментарий от andman

чтобы операционная система прочитала весь мой каталог, что бы при этом отображался прогресс чтения каждого файла в отдельности. Ни больше ни меньше.

Операционная система будет слишком много знать. Это убьёт её.
Или используй mc. Там можно настроить именно на твою хотелку процесс копирования.

imul ★★★★★
()
Ответ на: комментарий от intelfx

в офисе файлы хранятся в папках на полках. так-то.

bvn13 ★★★★★
()
Ответ на: комментарий от mos

Что такое наркоманское задание?

Вариант с find .. dd у меня не нагуглился за 1 сек.

На счёт Vim, не отстреливаю ногу, использую опцию «I», в заблуждение ввела не совсем логичная опция «i», так как результат команд :s/Test/test/gi или :s/Test/test/g одинаковый.

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

andman
() автор топика
Ответ на: комментарий от andman

результат команд :s/Test/test/gi или :s/Test/test/g одинаковый.

4.2
ты говоришь о том в чем ничего не понимаешь. а понимание оно вот, на расстаянии вытянутой руки.

mos ★★☆☆☆
()
Ответ на: комментарий от mos

ты говоришь о том в чем ничего не понимаешь. а понимание оно вот, на расстаянии вытянутой руки.

Можно поподробнее?

andman
() автор топика
Ответ на: комментарий от mos

vim -c":h s_f"
даже руку вытягивать не надо

Это разве опровергает выше описанное мною утверждение?

результат команд :%s/Test/test/gi и :%s/Test/test/g одинаковый.

andman
() автор топика
Ответ на: комментарий от andman

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

результат команд :%s/Test/test/gi и :%s/Test/test/g

вообще всегда

одинаковый.

(хоть действие их и разное)
т.к. твой пример по-научному называется «вырожденный».

mos ★★☆☆☆
()
Ответ на: комментарий от andman

Зачем в команду substitute было вводить флаг «i», наличие которого ничего не меняет?

andman
() автор топика

А можно уточнить?

Это задание тебе дал посторонний человек? Тогда можно ли увидеть его точную формулировку?

Или ты это задание сам придумал? Тогда какова конечная цель этого копирования (проверить скорость диска, проверить целостность системы, ещё что-то)?

justAmoment ★★★★★
()
Ответ на: комментарий от andman

он одинаковый только если у тебя set ic

но это не дефолт. по дефолту - noignorecase.
поэтому ПО ДЕФОЛТУ заменятся только вхождения Test.

если пользователь хочет заменить и test тоже, то ставит i

но если установлен ignorecase (что очевидно у тебя и есть) то тогда без лишних вопросов заменятся и Test и test.
В этом случае, если пользователь хочет заменить только Test, он ставит I

а ты даун. но не расстраивайся тут таких 86%.

копируй свои мамки дальше, не выделяйся из опшей массы.

mos ★★☆☆☆
()
Ответ на: комментарий от mos

За разъяснение set ic спасибо.

PS: Не ищи в чужом глазу иголки, позаботься о чистоте своих глаз.

andman
() автор топика
Ответ на: комментарий от andman

В первом же сообщении темы уже есть решение этой задачи.

i-rinat ★★★★★
()

Невозможно скопировать папку в в файл (даже специальный) рекурсивно (с сохранением имён). Можно все файлы поочереди записать в файл, вот так

find yourdirname -type f -exec pv {} \; > /dev/null

Можно использовать и gcp в не рекурсивном режиме, см его ман.

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 2)
Ответ на: комментарий от mos

Опять же всё зависит от определения ОС, файла и процесса чтения.

Да тут некислый вброс, я смотрю! Как без меня то?

Deleted
()
Ответ на: комментарий от legolegs

Можно, но в tmpfs место сильно ограничено. Если я правильно понял, ТС хочет что-то типа data scrubbing, только вручную. В этом случае он прочитает всё, что есть на локальных накопителях, что наверняка больше, чем объём доступного на машине ОЗУ.

i-rinat ★★★★★
()
Ответ на: комментарий от greenman

На SO как раз первым ответом — ФС на FUSE, которая отправляет данные в никуда. Собственно, когда я писал сообщение, у меня в соседней вкладке был открыт тот репозиторий на Github.

Но тут всё даже проще — нужно взять gcp и выбросить из него те части, которые создают директории назначения и записывают данные. Оставить только чтение и прогресс-бар.

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.