Библиотека сайта rus-linux.net
Используйте командную строку для работы с файлами
Оригинал: Use the command line to organise filesАвтор: Richard Smedley
Дата публикации: August 19, 2014
Перевод: Н.Ромоданов
Дата перевода: октябрь 2014 г.
Сортировка на вашем жестком диске, поиск потерянных файлов и архивирование всяких старых вещей будет выполняться гораздо быстрее, чем вы бы могли это сделать с помощью файлового менеджера с графическим интерфейсом.
Компьютерная обработка завершена, но половина рабочего «материала» случайным образом сохраняется на жестких дисков и флэш-накопителях - семейные фотографии, загруженные книги, текстовые файлы, помеченные как «Заметки» и «Разное», файлы PDF руководств по эксплуатации, брошюр и картинок, руководства в формате HTML, музыкальные и видео файлы, много старого исходного кода и даже файлы, которые вы даже не знаете, как открыть.
Пришла и ушла весна, а ваш неупорядоченной архив все еще с упреком ожидает вашего участия. Пришло время что-нибудь с ним сделать, но обычное перетаскивание файлов с помощью мыши занимает массу времени. Давайте вместо этого вспомним, как работают некоторые сочетания клавиш, и объединим наведение порядка с возможностью обучения.
Зачем это делать из командной строки? Есть ситуации, когда перетаскивать файлы с помощью мыши проще и удобнее, но для большинства операций с использованием многих файлов в нескольких каталогах командная строка может выполнить эту работу намного быстрее. Как мы увидим позже с помощью скриптов и запланированных заданий могут быть автоматизированы повторяющиеся операции.
Читайте дальше и узнайте, как через заданные интервалы времени выполнять поиск файлов, автоматически их архивировать, помещать их в разделы, предназначенные для резервного хранения, и безопасно их пересылать на удаленно расположенный сервер.
Пошаговые инструкции
Шаг 01: Размер файла
Есть много способов узнать, насколько файл большой. В графическом файловом сервере щелкните правой кнопкой мыши и выберите пункт Properties (Свойства) или наберите ls -l имяфайла, но команда ls -lhS (h, чтобы получить удобный для чтения вид) сразу позволит вам взглянуть на весь каталог, файлы в котором упорядочены по их размерам.
Шаг 02: Используйте программу du
Но если вас просто интересует использования диска , а не каждый атрибут файла, вашим лучшим помощником окажется программа disk use (использование диска) или du. Конечно, она рекурсивно выполняет поиск в каталогах.
Шаг 03: Используйте конвейер
Один из мощных механизмов оболочек систем *nix — возможность с помощью конвейера |объединять команды. Она позволяет брать результат работы одной программы и использовать его как ввод команды, указанной после |.
Шаг 04: Сортировка
Например, результат работы команды sort , а конкретно - sort -n -r, представляет собой список, отсортированные в порядке возрастания (-n), от большего к меньшему. Параметр -h указывает использовать сокращения KiB, MiB и т.д., а не просто выдавать размер, как это делается при использовании параметра -n.
Шаг 05: Используем программу du в подкаталогах
Программа du по своей природе рекурсивна и, хотя она удобна для просмотра того, что находится в подкаталогах, рекурсивность будет проблемой, когда вам нужен менее подробный обзор. Некоторой помощью может быть задание глубины рекурсии, равной 1 ...
Шаг 06: Циклическая обработка
Хотя следующая комбинация является, в частности, специальным вариантом сортировок в неграфических средах *nix, ее плюс в том, что она показывает информацию о больших отдельных файлах и работает в оболочке циклически.
Шаг 07: Полезная команда поиска find
Если дело касается файлов, а не каталогов, то лучше воспользоваться возможностями полезной команды поиска find. Ниже мы используем параметр -type f для того, чтобы ограничиться поиском файлов, и параметром -printf %k %p для того, чтобы показывать размер файла (в Кб) и его имя.
Шаг 08: Какие файлы занимают больше всего места
Для того, чтобы определить тип файлов, которые занимают на диске больше всего места, вам нужно будет использовать переключатель -iname, который не чувствителен к регистру, и в корневом каталоге применить команду find.
Шаг 09: Смотрим на время
На поиск по всей файловой системе потребуется время, в данном случае - восемь минут, и мы пропускаем не относящие к делу файлы в каталоге /proc, но такая тщательность может вас удивить тем, что диск, например, замусорен старыми почтовыми ящиками, о которых вы забыли.
Шаг 10: Музыка и ее перемещение
Мы собираемся использовать команду find для того, чтобы найти в системе все файлы MP3, или, по крайней мере, те, что находятся в домашнем каталоге, и переместить их на другой диск. Но прежде чем это делать, мы должны знать, что перемещать нельзя...
Шаг 11: Исключения
У вас в формате MP3 могут быть файлы для игр, или, может быть, файлы с системными звуками, поэтому найдите их в результатах недавнего поиска и укажите команде find игнорировать каталоги, где такие файлы могут находиться.
Шаг 12: Запоминаем расположение файлов
Вы собираетесь выполнить перемещение файлов без их копирования и сохранить на диске место, поэтому прежде, чем вносить изменения, давайте сначала запомним, где находятся эти файлы. Тогда вы будете знать, куда вернуть файлы в случае, если это будет необходимо!
Шаг 13: Выполняем перемещение
Вызов команды -exec позволяет выполнять команду, в данном случае команду перемещения /bin/mv, для каждого результата, выданного командой find. Это самый безопасный вариант, поскольку он обрабатывает специальные символы и работает на большинстве вариантов системы *nix.
Шаг 14: Команда Xargs
Команда xargs работает быстрее — она сразу выполняет работу для всех найденных результатов, но ей для безопасной обработки специальных символов требуется команда print0 (есть не на всех системах *nix). Обратите внимание, что эти последние две команды представляют собой просто одну строку, не нажимайте в конце на клавишу Enter.
Шаг 15: Перемещение с помощью скрипта
Если идея вашей уборке просто аккуратно переместить похожие файлы в один каталог и дело сделано, то это не совсем так. Поскольку вам не известно, когда ваш диск перестанет работать или ваш ноутбук будет потерян или украден, можно прямо сейчас создать резервные копии.
Небольшой скрипт будет брать эти файлы, которые вы собрали вместе, формировать из них архив, сжимать его и перемещать его в другой смонтированный каталог. Вы можете, например, перемещать резервную копию на удаленный файловый сервер. Мы в следующих шагах рассмотрим эти варианты.
Шаг 16: Резервное хранилище
Резервные копии следует перемещать туда, где их будет удобно хранить. Если у вас еще нет специального медийного компьютера или другого файлового сервера, но вы хотите создать что-то подобное, мы рекомендуем использовать то, что тихо работает, не требует вмешательства и мало потребляет элетроэнергии: устройство ARM - будь то старый NSLU-2, маршрутизатор с модифицированной прошивкой или старый добрый Pi — здесь подходят все эти варианты.
Шаг 17: Еще немного о Pi
Реальное решение зависит от программного обеспечения. Придерживайтесь простого варианта: Debian. Забудьте о NFS, SAMBA, или о других монтируемых удаленных файловых системах...
Шаг 18: Безопасный сервер резервного копирования
... просто установить демон OpenSSH. Теперь вы можете использовать SCP — безопасное копирование Secure Copy — для того, чтобы с помощью ваших скриптов сделать резервную копию ваших файлов. В данном случае мы в качестве медиа-сервера и сервера печати используем для хранилища старый нетбук Ubuntu Netbook - и программируемую фоторамку!
Шаг 19: Ключ или пароль?
На вашем сервере SSH есть открытый ключ, но добавление к нему еще одного из вашей локальной машины (который будет соответствовать закрытому ключу) позволит вам автоматизировать вход в систему и отказаться от пароля SSH, указываемого открыто в тексте ваших скриптов.
Шаг 20: Используемый порт
Мы оставляет ключи SSH для вас в качестве упражнения (хотя мы, возможно, в будущих статьях вернемся к этому вопросу), мы предлагаем открыть файл /etc/ssh/sshd_ config на сервер резервного копирования и изменения значения порта на случайным образом выбранное большое число.
Шаг 21: Надежное копирование
Если вы не настроили ключи, то установите пакет Sshpass - это лучший способ передать в скрипте пароль в SCP - и добавьте строку в приведенный выше скрипт. Все — одной строке.
Шаг 22: Делайте резервные копии регулярно
Теперь у вас есть скрипт и вы можете вызывать его с помощью cron регулярно, запуская команду crontab -e. Например, если вы в течение рабочего дня создаете и/или скачиваете большое количество файлов PDF, либо для их хранения есть особые каталоги, то укажите их в скрипте.
Шаг 23: Графический интерфейс командной строки
Прежде чем мы двинемся дальше, показывая вам силу командной строки, мы не говорим, что для графического интерфейса места нет. Установите пакет MC, и вам в двухпанельном файловом менеджере будут доступны все возможности команд, набираемых с клавиатуры.
Шаг 24: Другие скрипты
В будущем мы глубже рассмотрим возможности скриптов командной оболочки: цепочки программ и встроенные команды в коротких скриптах, благодаря которым можно избежать повторения одной и той же операции. Удачи!