Как стать автором
Обновить

Комментарии 69

Flash drive можно и в NTFS, и в Ext форматировать. =)
Конечно, можно. :) Просто бывают ситуации, когда это нецелесообразно или же просто нельзя… FAT остается самой распространенной ФС для flash-накопителей.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Если получателем является Windows система, то на ней эффекта, аналогичного cat file.part* > file можно достичь командой copy file.part1+file.part2+...+file.partn file
Спасибо за замечание! Windows в распоряжении нет, поэтому эта система не учитывалась — теперь буду знать! Еще раз спасибо! :)
Я бы сказал copy /b file.part1+file.part2 file
На всякий случай.
Ещё порекомендую BusyBox для windows — весь набор линуксовых примочек в 1 маленьком .exe
Наверное, стоит попробовать… Все-таки он более относится к Linux.
когда-то в институте пользовался этими командами для переноса больших архивов на дискетах)))
эх, напомнило далекую молодость, когда у домашнего провайдера SMTP-трафик до собственного сервера был бесплатным и можно было провернуть тривиальную махинацию: на институтский сервер скачать большой файл бесплатно wget-ом, потом его за-split-ить (так как у провайдера было ограничение на размер аттачмента) и отправить на провайдерский ящик файлы mail-ом, а на домашнем компьютере консольным почтовым клиентом собрать опять все воедино.

провайдер через пару месяцев просек фишку и стал раз за разом снижать лимит на размер приаттаченных файлов. а я всего лишь менял в скрипте параметр для split-а на кусочки соотв. размера и мне было все равно, сколько их получалось :) продолжалась наша неравная битва почти год, потом я съехал с той квартиры непобежденный :)

спасибо за заметку, split — отличнейшая штука!
А cat поможет мне соединять разбитые winrar'ом архивы?
черт дубль
Дык эта. Легко. Получишь большой такой мегархив. Одна беда — неясно чем его потом распаковывать. В принципе хорошая задачка для собеседования на позицию сисадмина: кто-то соединил winrar'овские архивы в одно большое месиво командой «cat» — как бы оттуда достать файлы. Пасиба за наводку.
Никак, кроме повторного разбиения на те же кусочки и сборки уже раром. А вот по какому признаку в сырых данных вычленять кусочки — это уже вопрос не к админам, а к программерам.
Как раз к админам. Я посмотрел файл /usr/share/misc/magic откуда узнал что магическая последовательность для архивов RAR это «Rar!». Дальше man grep, ищу по слову offset, нахожу опцию -b. Итак: grep -b -o -a 'Rar!' file. После этого пользуясь полученным списком смещений и командой dd, достаю исходные файлы.
Браво! Вполне хорошее админское решение. А то сразу «к программистам, к программистам». Конечно если внутри архива лежит файл с названием «Rar!.exe», то задача становится сложнее, но задача админа как раз и отличается от программистской тем, что нужно как правило не 100% решение, а 99% — но зато здесь и сейчас, а не через месяц работы.
Давайте теперь по каждому мануальному решению создадим топик, будет здорово.
Поддерживаю, будет интересно почитать об этом.
Я вообще-то пошутил.
Но раз вы такой серьезный, вот вам:

find. -name '*.php' -exec php -l {} \;

найдет все файлы с расширением .php в текущей директории и проверит их синтасис :)
Кстати интересная тема, вот для меня когда-то давно было загадкой, как рекурсивно сделать chmod для отдельно для папок и для файлов. А то ведь делаешь rwrwrw, и в папки зайти не можешь ;)

#!/bin/bash
find ./ \( -type f -exec chmod $1 {} \; \) -o \( -type d -exec chmod $2 {} \; \);
Имейте в виду, что -exec неэффективен, так как производит запуск программы для каждого файла. Хотя для частного случая с chmod уже написали, как его нужно запускать, но если для какого-то другого случая вам нужен будет именно find и при этом программа поддерживает список файлов в аргументах, то лучше пользоваться xargs, так как он запустит chmod не тысячу раз, а всего десяток:
find. -type f -print0 | xargs -0 chmod $1
Если у вас гарантированно нет файлов с пробелами или переносами строк, то можно чуть проще:
find. -type f | xargs chmod $1
Для вашей проблемы не нужно никакого рекурсивного chmod'а. Нужно делать

chmod +rwX -R.

Читайте man на тему разницы между «x» и «X»…
Во во, проблема простая, а какие интересные решения находятся )
О как! Спасибо.
Признаться, действительно, несколько колебался прежде чем опубликовать такое простое решение, ведь это не более, чем пример. В итоге решил, что уже достаточное число пользотвателей мигрирует на Linux и используют его для повседневных задач. Популяризация Ubuntu и развитие интерфейсов тому сильно помогают. Такой контингент практически не имеет опыта работы в консоли, ведь многие задачи (создание/извлечение архивов) решаются правым кликом. Однако, что делать, если понадобилось срочно дать другу на flash 8 Гбайтовый образ, а устройство форматировано в FAT32? Именно для такого dummy-случая и пользователя была размещена эта информация. Естественно, у корифеев консоли она вызовет неприятную реакцию, но для просто пользователя, надеюсь, будет практическая помощь.
Спасибо за замечание! Windows в распоряжении нет, поэтому эта система не учитывалась — теперь буду знать! Еще раз спасибо! :)
есть замечательный ресурс для этого: linsovet.ru
linsovet.com/
Спасибо за ресурс — не знал о нем.
А сайты уже умерли :-(.
Признаться, действительно, несколько колебался прежде чем опубликовать такое простое решение, ведь это не более, чем пример. В итоге решил, что уже достаточное число пользователей мигрирует на Linux и используют его для повседневных задач. Популяризация Ubuntu и развитие интерфейсов тому сильно помогают. Такой контингент практически не имеет опыта работы в консоли, ведь многие задачи (тот же процесс создание/извлечение архивов, например) решаются правым кликом. Однако, что делать, если понадобилось срочно дать другу на flash 8 Гбайтовый образ, а устройство форматировано в FAT32? Именно для такого dummy-случая и пользователя была размещена эта информация. Естественно, у корифеев консоли она вызовет неприятную реакцию, но для простого пользователя, надеюсь, будет практическая помощь.
Спасибо за замечание! Windows в распоряжении нет, поэтому эта система не учитывалась — теперь буду знать! Еще раз спасибо! :)
Мощь консоли безгранична! :)
Хватит флудить
для Windows split доступен в пакете GnuWin32 (Core Utils)

распаковать в папку windows/system32
парсер — лох
garr.dl.sourceforge.net/sourceforge/gnuwin32/coreutils-5.3.0.exe
Скажите, а cat * правильно соберёт файлы
part1
part2
part3

part9
part10
part11

или он их соберёт так?

part1
part10
part11
part2

part9

?
Второе. Для проверки — echo *
Правильно. Первый вариант.
Так первый или второй? Два разных ответа получил.
Первый.
Проверьте:
$ for ((i=1;i<=11;i++)); do echo $i > part$i; done
$ cat part* > testfile
$ cat testfile
1
10
11
2
3
4
5
6
7
8
9

Именно поэтому команда split и не будет создавать такие файлы, а грязно выругается: split: Исчерпаны суффиксы для выходных файлов… Так что галактико безопасносте…
Да, простите, все верно. Действительно, дело в том, что split создает «правильные» суффиксы (т. е. 00, 01, 02, ..., 10, 11, 12, ...), поэтому cat собирает в правильном порядке. В примере указаны ключи "-a 1 -d", что значит к имени добавлять цифровой суффикс единичной длины. В случае с "-a 2 -d" было бы *.part00, *.part01 и т. д.
Не нужно гадать. Нужно использовать команду sort :)
А что если на харде нет лишних 4 гигабайт, как напрямую на флешку писать?
$ cd /media/USBflash
$ split… /path/to/file/sample.iso sample.iso.part
Наверное, стоит попробовать вместо dd… Все-таки она более относится к Linux, хоть и ни хрена не подходит для данной ситуации…
Писать скрипт (например) или вручную запускать кучу раз dd:

dd if=big.iso of=/flash/big.iso.part bs=1000M count=1 skip=N

каждый раз увеличивая N от нуля до тех пор, пока dd не запишет пустой файл.
Ну а на другом компьютере каждый раз делать cat /flash/big.iso.part >> /dir/big.iso, а не тратить двойной объем и время на копирование всех частей и их собирание.
dd есть для Windows XP? Оказалось, что приведенный способ универсален для Linux/Mac OS/Windows (естественно, при наличии соответствующих программ в системе).
Не знаю.
Не, способ неправильный, пользоваться им без исправлений можно только если у вас куча памяти.

Я забыл одну штуку про dd. dd сначала считывает весь блок заданного размера (в этом примере 1 гиг) в память, а потом пишет в выходной файл.

Вот так будет нормально:
dd if=big.iso of=/flash/big.iso.part bs=1M count=1000 skip=N000
то есть уменьшить блок в 1000 раз и скипать по тысяче.
варианты для сплита
1.
cd.
split -b1024M --prefix /destination/part longfile
2.
cd /destination
split -b1024M /source/longfile
1.
cd /source
У меня даже мысли не возникло, что вопрос Mr Floppy может быть настолько простым. Как-то сомневаюсь, что он действительно таким был.

Я вижу ситуацию совсем по-другому:
1) файл размером 10 гиг на жёстком диске
2) места на жёстком диске, допустим, 2 гига
3) флешка размером 1 гиг
4) компьютер с кучей места, куда нужно перенести файл из пункта 1.
Вот только сегодня собирал cat`ом разбитый в tcmd файл. Причём под WinXP. UnixUtils — сила!
Ну вот как-то незаметно появилось поколение юниксоидов, не читающих ман, и не понимающих фразу RTFM…
Чтобы прочитать man, нужно знать, какой man читать, и вообще догадываться о существовании такой программы.
4000M != 4Gb
а вообще спасибо, не знал про эту тулзу
Для split M и MB имеют разные значения:

$ split --help

SIZE may have a multiplier suffix:
b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,
GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.
Обычно, когда получателем являлся неискушенный пользователь виндоуз, я использовал некомпрессированные zip архивы разбитые на тома.(Не компрессировал, когда надо было разбить уже сжатые файлы, например длинную мп3 дорожку) Файлы умеют соединять некоторые командеры, также про copy in1 + in2 out уже написали до меня. А вообще эта проблема уже уходит на второй план.
пардон
стандартный зип тома поддерживает?
тогда уж winrar
а закладываться что у пользователя стоит тотал или 7z не стоит
Я имел ввиду не настолько неискушенного, чтобы у него не стояло архиватора вообще. Таким наверное надо тащить богомерзкие самораспаковывающиеся архивы. А поддержка рара есть реже чем зип томов (по крайней мере на моем опыте, у вас мог быть другой). У меня на компьютере вообще рара не стоит. Честно говоря, я могу прочитать его лицензию, чтобы поставить, но я лучше в это время пойду побегать в парк или поучу язык. Ну или, на худой конец, почитаю (откоментирую) что нибудь такое же бесполезное, как чтение раровской лицензии, но гораздо более интересное.
ЗЫ а вообще Вы, наверное, правы — видимо пользование разбитых на тома зипов видимо тоже моветон.
чем выполняется поддержка томов в zip на Ваших компах?
я, честно говоря, кроме 7z и TC других прог не знаю
7z рекомендовал к пользованию всем своим коллегам

разбитие на тома — это правильно!

не люблю когда выкладывают файлик на несколько гиг
а потом при скачивании оказывается, что гдето чтото поломалось и давай по новой
а вот нарезанное по 100-500М — вполне приемлемый вариант

наши заказчики в свое время признавали только zip
последнее время успешно пользуют rar и 7z. особенно когда нужны многотомные архивы
Раньше был еще широко распространен WinZip.
Мне казалось винрар тоже хавает многотомные зип тома, хотя не пользовался это программой несколько лет.
>чем выполняется поддержка томов в zip на Ваших компах?
У меня file roller «из коробки» открывает.
Ан-нет, удалил консольный 7zip, теперь перестал.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории