Це пакет даних команд, який можна запустити в безкоштовному хостинг-провайдері OnWorks за допомогою однієї з наших безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS
ПРОГРАМА:
ІМ'Я
datapacker - інструмент для упаковки файлів у мінімальну кількість контейнерів
СИНТАКСИС
пакувальник даних [ -0 ] [ -a ДІЇ ] [ -b ФОРМАТ ] [ -d ] [ -p ] [ -S SIZE ] -s SIZE Фото ...
пакувальник даних -h | --допомога
ОПИС
пакувальник даних це інструмент для групування файлів за розміром. Він призначений для групування файлів таким чином, щоб вони
наповнюйте контейнери фіксованого розміру (так звані «бункери»), використовуючи мінімальну кількість контейнерів. Це
корисно, наприклад, якщо ви хочете заархівувати кілька файлів на компакт-диск або DVD і хочете
організувати їх так, щоб використовувати мінімально можливу кількість компакт-дисків або DVD-дисків.
У багатьох випадках пакувальник даних виконується майже миттєво. Особливо слід відзначити
дію жорсткого посилання (див. ПАРАМЕТРИ нижче) можна використовувати для ефективного копіювання даних у контейнери без
потрібно взагалі копіювати дані.
пакувальник даних є інструментом у традиційному стилі Unix; його можна використовувати в трубах і називати іншим
інструментів.
ВАРІАНТИ
Ось параметри командного рядка, які ви можете встановити пакувальник даних. Будь ласка, зверніть увагу, що -s і в
принаймні один файл (див. СПЕЦИФІКАЦІЮ ФАЙЛУ нижче) є обов’язковим.
-0
--нуль Під час читання списку файлів зі стандартного вводу (див. СПЕЦИФІКАЦІЮ ФАЙЛУ нижче),
очікуйте, що вхідні дані будуть розділені символами NULL (ASCII 0) замість одного на
лінія. Особливо корисно з знаходити -друк0.
-a ДІЇ
--дія=ДІЇ
Визначає, яку дію виконувати із збігами. Зверніть увагу, що будь-які дії
вихідні дані будуть відсортовані за бункером, першим буде бункер 1. Серед можливих дій:
друк Друкуйте по одному рядку для кожного файлу. Кожен рядок містить номер ящика
(у форматі, наданому -b), символ табуляції ASCII, а потім назву файлу.
роздруковано
Друкуйте один напіврозбірливий рядок на контейнер. Кожен рядок містить bin
номер, а потім список імен файлів, які потрібно помістити в цей кошик, із вкладкою ASCII
після номера ящика та між кожним ім’ям файлу.
print0 Для кожного файлу виведіть номер bin (відповідно до формату, наданого -b),
символ ASCII NULL, ім’я файлу та інший символ ASCII NULL.
Ідеально підходить для використання з xargs -0 -L 2.
exec:КОМАНДА
Для кожного файлу виконайте вказану КОМАНДУ через оболонку. Програма
Команді COMMAND буде передана інформація в її командному рядку, як зазначено нижче.
Це помилка, якщо згенерований командний рядок для даного кошика завеликий
для системи.
Ненульовий код виходу з будь-якої КОМАНДИ спричинить пакувальник даних припинити. Якщо
КОМАНДА містить лапки, не забудьте взяти всю команду в лапки, наприклад:
datapacker '--action=exec:echo "Кошик: $1"; зміна; є "$@"'
Аргументами даної команди будуть:
· argv[0] ($0 в оболонці) буде назвою оболонки, що використовується для виклику
команда -- $SHELL або /bin/sh.
· argv[1] ($1 в оболонці) буде номером ящика, відформатованим відповідно до -b.
· argv[2] і далі ($2 і далі в оболонці) будуть файлами для розміщення в цьому кошику
жорстке посилання
Для кожного файлу створіть жорстке посилання за адресою Бен/ім'я файлу вказуючи на оригінал
вхідна назва файлу. Створює каталог Бен в міру необхідності. Альтернатива
місця та формати для Бен можна вказати з -b. Усі каталоги bin
і всі вхідні дані повинні знаходитися в одній файловій системі.
Після завершення обробки результатів корзини ви можете безпечно видалити
контейнери без видалення вихідних даних. Крім того, ви можете залишити
та видаліть вихідні дані. Будь-який підхід буде ефективним.
Помилкою є спроба створити жорстке посилання між файловими системами або мати
два вхідні файли з однаковою назвою файлу в різних шляхах. пакувальник даних волі
вихід у будь-якій із цих ситуацій.
Дивіться також --глибинні посилання.
симпосилання
Люблю жорстке посилання, але натомість створіть символічні посилання. Символічні посилання можуть охоплювати файлові системи,
але ви втратите інформацію, якщо видалите вихідні дані (попередні дані).
Люблю жорстке посилання, це помилка, коли одне ім’я файлу зустрічається в кількох
введіть каталоги з цією опцією.
Дивіться також --глибинні посилання.
-b ФОРМАТ
--binfmt=ФОРМАТ
Визначає вихідний формат для назви контейнера. Цей формат подано як %d вхідні дані для
функція, яка інтерпретує це як printf(3) би. Це може бути корисно обом
визначте назву та розташування ваших бункерів. При бігу пакувальник даних з
певні аргументи, формат bin можна прийняти як каталог, у якому знаходяться файли
цей контейнер пов’язаний. Типовим є %03d, який виводить цілі числа з першим
нулі, щоб усі назви кошиків мали ширину принаймні три символи.
Інші корисні варіанти можуть включати destdir/%d для розміщення рядка "destdir/".
перед номером біну, який відображається без початкових нулів.
-d
--відлагоджувати
Увімкнути режим налагодження. Це тут для майбутнього розширення, наразі його немає
будь -який ефект.
-D
--глибинні посилання
Якщо використовується з дією символічного посилання або жорсткого посилання, замість створення всіх посилань у a
один плоский каталог під bin, імітує структуру вихідного каталогу під
bin. Має найбільший сенс, коли використовується з -p, але може бути корисним і без нього, якщо
є файли з однаковими назвами в різних вихідних каталогах.
--допомога Показати коротку інформацію про використання та вийти.
-p
--заповідний порядок
Зазвичай пакувальник даних використовує ефективний алгоритм, який намагається перевпорядкувати такі файли
що кількість необхідних бункерів зведена до мінімуму. Іноді ви можете замість цього забажати
зберегти порядок файлів за рахунок можливого використання більшої кількості контейнерів. в
у цих випадках ви захочете скористатися цією опцією.
Як приклад такої ситуації: можливо, ви робили одну фотографію в день
декілька років. Ви хотіли б заархівувати ці фотографії на компакт-диску, але ви цього хочете
зберігати в хронологічному порядку. Ви назвали файли так, що імена
вкажіть порядок, щоб ви могли передати список файлів пакувальник даних використання -p зберегти
порядок у ваших кошиках. Таким чином, кошик 1 міститиме найстаріші файли, контейнер 2 –
другий за віком і так далі. Якщо -p не використовувався, ви можете використовувати менше компакт-дисків, але
фотографії будуть розподілені по всіх компакт-дисках без збереження вашої хронології
порядку.
-s SIZE
--розмір=SIZE
Дає розмір кожного контейнера в байтах. Можуть бути такі суфікси, як «k», «m», «g» тощо
використовується для позначення кілобайтів, мегабайтів, гігабайтів і так далі. Числа, такі як
1.5 г є дійсними, і, якщо потрібно, їх буде округлено до найближчого можливого цілого числа
value.
Розмір першого контейнера можна змінити за допомогою -S.
Ось розміри деяких часто використовуваних контейнерів. Для кожного пункту я надав вам
як із основною ємністю запису диска, так і із запропонованим значенням для
-s. Рекомендоване значення для -s нижча за базову потужність, оскільки там
накладні витрати накладаються файловою системою, що зберігається на диску. Можливо знайдеш
що запропоноване значення для -s нижчий за оптимальний для дисків, які містять мало
великих файлів і вище, ніж бажано, для дисків, які містять велику кількість малих файлів
файли.
· CD-ROM, 74 хвилини (стандарт): 650 м / 600 м
· CD-ROM, 80 хвилин: 703 м / 650 м
· CD-ROM, 90 хвилин: 790 м / 740 м
· CD-ROM, 99 хвилин: 870 м / 820 м
· DVD+-R: 4.377 г / 4 г
· DVD+R, двошаровий: 8.5 г / 8 г
-S
--size-first
Розмір першого бункера. Якщо не вказано, за замовчуванням використовується значення, указане разом -s.
Це може бути корисним, якщо ви будете використовувати механізм на вулиці пакувальник даних додати
додаткова інформація для першого ящика: можливо, індекс того, який контейнер має який
файл, інформацію, необхідну для того, щоб зробити компакт-диск завантажувальним тощо. Ви можете використовувати те саме
суфікси як з -s за допомогою цієї опції.
--сортувати Сортує список файлів для обробки перед виконанням дій. При поєднанні з -p,
призводить до сортування результату. Цей параметр не має жодного ефекту, крім збільшення ЦП
використання, якщо не поєднувати з -p.
Фото ТЕХНІЧНІ ХАРАКТЕРИСТИКИ
Після параметрів ви повинні надати один або кілька файлів, які слід розглянути для упаковки в кошики.
Крім того, замість переліку файлів у командному рядку ви можете вказати один дефіс
(-), який розповідає пакувальник даних для читання списку файлів зі стандартного введення (stdin).
пакувальник даних ніколи не повертається до підкаталогів. Якщо вам потрібен рекурсивний пошук – знахідка
усі файли в заданому каталозі та всіх його підкаталогах -- дивіться другий приклад у
Розділ ПРИКЛАДИ нижче. пакувальник даних призначений для інтеграції з знаходити(1) у цьому
ситуації, щоб ви могли скористатися перевагами вбудованої потужної рекурсії та фільтрації find
особливості.
Під час читання файлів зі стандартного вводу передбачається, що список містить один окремий файл
ім'я файлу на рядок. Досвідчені ветерани POSIX визнають властиві обмеження
цей формат. З тієї причини, коли дано -0 у поєднанні з одним файлом -,
пакувальник даних натомість очікуватиме, на стандартному вводі, список файлів, кожен із яких закінчується
символ ASCII NULL. Такий список можна легко створити за допомогою знаходити(1) використовуючи його
-друк0 варіант.
ПРИКЛАДИ
· Додайте всі зображення JPEG ~/Зображення у контейнери (за допомогою жорстких посилань) під уже існуючим
каталог ~/bins, не більше 600 Мб на контейнер:
пакувальник даних -b ~/bins/%03d -s 600m - жорстке посилання ~/Зображення/* .jpg
· Вставте всі файли ~/Зображення або будь-який його підкаталог у кошики розміром 600 МБ ~/bins,
за допомогою жорсткого посилання. Це простий приклад для наслідування, якщо ви просто хочете рекурсивний
пошук всіх файлів.
знаходити ~/Зображення -тип f -print0 |
пакувальник даних -0 -b ~/bins/%03d -s 600m -a жорстке посилання -
· Знайти всі зображення JPEG у ~/Зображення або будь-який його підкаталог, помістіть їх у кошики
(за допомогою жорстких посилань) у попередньому каталозі ~/bins, не більше 600 Мб на контейнер:
знаходити ~/Зображення -name "*.jpg" loading="lazy" -print0 |
пакувальник даних -0 -b ~/bins/%03d -s 600m -a жорстке посилання -
· Знайдіть усі зображення JPEG, як зазначено вище, помістіть їх у контейнери по 4 ГБ, але замість того, щоб помістити їх
де завгодно, обчисліть розмір кожного бункера та відобразіть його.
знаходити ~/Зображення -name "*.jpg" loading="lazy" -print0 |
пакувальник даних -0 -b ~/bins/%03d -s 4g
'--action=exec:echo -n "$1: "; зміна; du -ch "$@" | grep total'
-
Це відобразить результат так:
/home/jgoerzen/bins/001: всього 4.0 ГБ
/home/jgoerzen/bins/002: всього 4.0 ГБ
/home/jgoerzen/bins/003: всього 4.0 ГБ
/home/jgoerzen/bins/004: всього 992 млн
Примітка: шаблон grep у цьому прикладі простий, але призведе до неочікуваних результатів, якщо
будь-який відповідний файл містить слово "total".
· Знайдіть усі зображення JPEG, як зазначено вище, і згенеруйте для них ISO-образи розміром 600 МБ ~/bins. Цей довідник -
генеруватиме ISO-образи безпосередньо без жодного жорсткого посилання на файли ~/bins.
знаходити ~/Зображення -name "*.jpg" loading="lazy" -print0 |
пакувальник даних -0 -b ~/bins/%03d.iso -s 4g
'--action=exec:BIN="$1"; зміна; mkisofs -r -J -o "$BIN" "$@"'
-
Ви можете, якщо хочете, передати цей результат безпосередньо в програму для запису DVD.
Або ви можете скористатися growisofs, щоб записати DVD+R за один крок.
ПОМИЛКИ
Це помилка, якщо будь-який вказаний файл перевищує значення, задане за допомогою -s або -S.
Це також помилка, якщо будь-які вказані файли зникають під час пакувальник даних біжить.
Використовуйте datapacker онлайн за допомогою сервісів onworks.net