Журнал LinuxFormat - перейти на главную

LXF94:Ответы

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(3. Упорядочить хаос)
Строка 97: Строка 97:
  
 
Если это имеет значение, то у меня Fedora Core 6 64-bit, командная строка не пугает. '''NiceBloke, из форумов LXF'''
 
Если это имеет значение, то у меня Fedora Core 6 64-bit, командная строка не пугает. '''NiceBloke, из форумов LXF'''
 +
 +
'''Ответ:''' С данными EXIF работают несколько программ. Я предпочитаю ExifTool (http://www.sno.phy.queensu.ca/~phil/exiftool). ExifTool читает и обрабатывает почти любые данные EXIF, включая извлечение EXIF-тэгов Date/Time Original (первоначальной даты/времени) или Create Data (времени создания). Эту информацию можно использовать для переименования файлов или изменения их временных отметок. Например:
 +
 +
find -name ‘*.jpg’ | while read PIC; do
 +
DATE=$(exiftool -p ‘$DateTimeOriginal’ $PIC | sed ‘s/[:
 +
]//g’)
 +
touch -t $(echo $DATE | sed ‘s/\(..$\)/\.\1/’) $PIC
 +
mv -i $PIC $(dirname $PIC)/$DATE.jpg
 +
done
 +
 +
Первая строка находит все файлы *.jpg в текущем и дочерних каталогах. Следующая стока извлекает тэг Date/Time Original каждого файла (может понадобиться тэг Create Data, смотря какая камера) и удаляет все пробелы и двоеточия. Затем команда touch устанавливает временную отметку согласно полученным данным, – устрашающее регулярное выражение sed всего лишь вставляет точку перед двумя последними символами (touch ожидает, что секунды будут отделены от прочих данных временной строки именно так). Заключительная строка переименовывает файл, используя параметр -i с mv на тот случай, если временные отметки двух файлов одинаковы. Это предотвращает перезапись файлов.
 +
 +
Подобное умеет проделывать большинство программ обработки цифровых фото, обходящихся без командной строки – DigiKam, KPhotoAlbum, F-Spot и GThumb все имеют средства обращения с файлами, основанные на использовании EXIF-данных.
 +
 +
Недостаток этих программ – они работают только в текущей директории, а вышеприведенный скрипт обрабатывает JPEG-файлы во всех вложенных каталогах. Если же у вас несколько гигабайт фотографий в единственной директории, то такую коллекцию вряд ли приведет в порядок одно только переименование файлов!
 +
 +
Решением проблемы дубликатов может стать программа fdupes (http://netdial.caribe.net/~adrian2/fdupes. html, доступная в виде RPM для FC6). Программа
 +
сравнивает содержимое файлов, поэтому способна находить дубликаты даже под разными именами и временными метками.
 +
 +
fdupes --recurse ~/photos
 +
 +
выведет все дубликаты в каталоге photos. Можно удалить лишние дубли:
 +
 +
fdupes --recurse --omitfirst --sameline ~/photos | xargs
 +
rm
 +
 +
Соблюдайте осторожность при любых действиях, связанных с автоматическим удалением файлов. Сначала запустите программу без удаления и оцените результат ее работы. '''ПХ'''

Версия 18:23, 12 марта 2008

Содержание

Ответы

Есть вопрос по OpenSource? Пишите нам по адресу: answers at linuxformat dot ru

Сегодня мы ответим на вопросы о:

  1. Удалении Windows
  2. Прокси-сервере
  3. EXIF-данных
  4. Jigdo
  5. Модемах
  6. Инсталляции с DVD
  7. Почте для консоли
  8. OpenGL
  9. Правилах udev
  10. Случайных числах
  11. Раздвоении дисплея
  • Postfix
  • Команде netstat

1. Решительный шаг

Вопрос: Хоть я и новичок в Linux, но все же решился полностью убрать Windows XP со своего ноутбука. У меня двойная загрузка XP и Ubuntu; не могли бы вы подсказать мне, как убрать Windows и оставить только Ubuntu? Как передать Linux место, прежде занятое Windows XP? А может быть, мне, как новичку, проще отформатировать весь диск и переустановить Linux? Pub Bloke, из форумов LXF

Ответ: Начнем с вашего последнего вопроса. Конечно, переустановить Ubuntu и отдать ему во владение весь диск проще, но тогда вы потеряете все свои настройки и данные. Удаление Windows-раздела и перераспределение освободившегося места под Linux оставит текущую установку Ubuntu нетронутой. Кроме того, проделав эту работу, вы ближе познакомитесь с Linux.

Уничтожить Windows нетрудно. Сначала нужно удалить Windows-раздел (обычно hda1) с помощью Gnome Partition Editor, который вы найдете в меню System > Administration (Система > Администрирование). Если его там нет, добавьте GParted через менеджер пакетов Synaptic.

Найти Windows-раздел тоже легко, обычно он содержит файловую систему NTFS (в крайнем случае, FAT), а Linux такими файловыми системами не пользуется. Удалив раздел, щелкните мышью в освободившейся неразмеченной области и нажмите кнопку New (Создать) для создания нового Linux-раздела с файловой системой ext3 (сгодятся установки по умолчанию).

Пока новый раздел выделен в списке, перейдите в меню и выберите Partition > Format To > Ext3 (Раздел > Форматировать в > Ext3) (см. экранный снимок справа). Нажмите Apply (Применить), чтобы изменения вступили в силу.

Следующий шаг – удаление пункта Windows из загрузочного меню. Откройте терминал и введите

sudo -i
gedit /boot/grub/menu.lst

чтобы открыть загрузочное меню в редакторе. Ближе к концу этого файла вы найдете строку, начинающуюся с ‘title Windows’. Удалите все вплоть до следующей пустой строки и сохраните файл. Windows в загрузочном меню больше не появится.

А вот освоить только что освободившееся пространство уже сложнее. Увеличить Linux-раздел можно, только отодвинув его окончание, а освобожденное пространство располагается перед началом Linux-раздела, так как Windows-раздел был первым на диске. К счастью, Linux может использовать несколько разделов – в данном случае вы можете занять освободившееся место под свою домашнюю директорию (преимущество такого подхода состоит в том, что при переустановке системы или переходе на новый дистрибутив вы сохраните все свои персональные данные, поэтому они находятся на отдельном разделе). Сообщить системе о том, что данный раздел нужно занять под домашнюю директорию, можно, добавив строку в файл /etc/fstab (это таблица файловых систем). В терминале, которым вы только что пользовались, введите

gedit /etc/fstab

Добавьте следующую строку и сохраните файл:

/dev/hda1 /home ext3 defaults 0 0

До перезагрузки, которая активирует новый home-раздел, скопируйте туда существующие файлы. Не покидая терминал, введите

mkdir /mnt/tmp
mount /dev/hda1 /mnt/tmp
mv /home/* /mnt/tmp/
reboot

Эти команды временно смонтируют новый раздел в /mnt/tmp, переместят в него ваш домашний каталог и перезагрузят компьютер, после чего изменения станут необратимыми. Теперь в загрузочном меню не останется упоминания о Windows, а после загрузки Ubuntu то место, что прежде занимала Windows, можно будет использовать для хранения Ваших собственных файлов. НБ

2. Прокси для деток

Вопрос: Web-прокси Squid (и SquidGuard) работает на моем компютере с Fedora Core 6 с тех пор, когда я прочел о нем в самом первом учебнике Hardcore Linux, в LXF75. Я настроил SquidGuard так, чтобы защитить моих детей от нежелательного контента. Это означает, что на их (Windows XP) компьютере я установил маршрут доступа в Интернет через мой прокси-сервер (192.168.100.100:8080), и все бы прекрасно.

Но меня беспокоит, что мой старший очень быстро взрослеет, и недалек тот день, когда он догадается снять флажок Use Proxy Server (Использовать проксисервер) и, настроив прямое подключение к Интернету, получит ничем не ограниченный доступ. Можно ли пропускать весь трафик через мой (постоянно включенный) FC6-компьютер (вероятно, пробросом портов на маршрутизаторе, пароль к которому знаю только я), чтобы весь web-трафик проходил через прокси-сервер, а при «прямом» подключении доступа в Интернет не было? Если можно, то как? Я пробовал перенаправить порты 80 и 8080 на IP моего компьютера, но это не помогло. Марк [Mark], из форумов LXF

Ответ: Насколько я понимаю, под словом «Интернет» вы подразумеваете World Wide Web, то, с чем обычно имеет дело Squid. Однако вы можете направить весь Интернет-трафик через свою FC6-машину, а следовательно, через SquidGuard, в три шага.

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

Во-вторых, необходимо назначить FC6 шлюзом по умолчанию, чтобы весь Интернет-трафик (а не только web-трафик) проходил через него. Отредактируйте /etc/sysctl.conf от имени суперпользователя, изменив окончание строки

net.ipv4.ip_forward = 0

с 0 на 1. Потом наберите

service network restart

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

Остается проблема удаления Вашими детьми всяких прокси-настроек, поэтому мы воспользуемся функцией Squid, называемой «прозрачный прокси». Эта функция принудительно направляет все web-запросы, проходящие через машину – а вы уже предопределили их направление на предыдущих шагах – на прокси Squid, следовательно, на SquidGuard. Откройте в редакторе файл настройки Squid (обычно /etc/Squid/Squid.conf) и найдите строку (строки), начинающиеся с ‘http_port’. В Вашем файле это, скорее всего, выглядит так: http_port 8080. Измените это на

http_port 80 transparent

80 – это стандартный HTTP-порт. Параметр transparent предписывает Squid вмешиваться и перехватывать все запросы, независимо от того, настроен браузер на работу с прокси или нет. вам нужно или удалить старую настройку прокси из браузеров, или добавить строку обработки запросов для старого порта 8080.

http_port 8080 transparent

Существует другой метод сделать то же самое. Можно оставить http_port на 8080, а запросы, которые вы хотите пропускать через прокси, перенаправить с порта 80 на 8080 при помощи правила Iptables. Это сложнее, но удобнее, так как позволяет некоторым машинам полностью миновать прокси. Подробнее об этом можно узнать на web-сайте Squid: http://www.Squidcache.org.

Вы можете также использовать Iptables или графическую оболочку вроде Firestarter для блокировки исходящего трафика на любые порты, кроме стандартных (HTTP, HTTPS, POP3, SMTP и FTP). Это предотвратит использование Вашими детьми удаленного прокси, работающего через другой порт. Возможно, вы решите сделать это на маршрутизаторе, но если вы установите запрет на своей FC6-машине, то блокировка нежелательного доступа для детей не ограничит вашей собственной свободы. НБ

3. Упорядочить хаос

Вопрос: В Отбилась от рук моя фотоколлекция на несколько гигабайт. Я хотел бы упорядочить ее, чтобы сделать резервную копию. Не подскажете ли программу, которая может переименовать файл с учетом данных о времени создания (EXIF) и установить время изменения файла равным времени создания? Моя недавняя попытка сделать резервную копию перед очисткой компьютера привела к тому, что даты создания всех файлов оказались замещены датой записи DVD.

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

Если это имеет значение, то у меня Fedora Core 6 64-bit, командная строка не пугает. NiceBloke, из форумов LXF

Ответ: С данными EXIF работают несколько программ. Я предпочитаю ExifTool (http://www.sno.phy.queensu.ca/~phil/exiftool). ExifTool читает и обрабатывает почти любые данные EXIF, включая извлечение EXIF-тэгов Date/Time Original (первоначальной даты/времени) или Create Data (времени создания). Эту информацию можно использовать для переименования файлов или изменения их временных отметок. Например:

find -name ‘*.jpg’ | while read PIC; do
DATE=$(exiftool -p ‘$DateTimeOriginal’ $PIC | sed ‘s/[:
]//g’)
touch -t $(echo $DATE | sed ‘s/\(..$\)/\.\1/’) $PIC
mv -i $PIC $(dirname $PIC)/$DATE.jpg
done

Первая строка находит все файлы *.jpg в текущем и дочерних каталогах. Следующая стока извлекает тэг Date/Time Original каждого файла (может понадобиться тэг Create Data, смотря какая камера) и удаляет все пробелы и двоеточия. Затем команда touch устанавливает временную отметку согласно полученным данным, – устрашающее регулярное выражение sed всего лишь вставляет точку перед двумя последними символами (touch ожидает, что секунды будут отделены от прочих данных временной строки именно так). Заключительная строка переименовывает файл, используя параметр -i с mv на тот случай, если временные отметки двух файлов одинаковы. Это предотвращает перезапись файлов.

Подобное умеет проделывать большинство программ обработки цифровых фото, обходящихся без командной строки – DigiKam, KPhotoAlbum, F-Spot и GThumb все имеют средства обращения с файлами, основанные на использовании EXIF-данных.

Недостаток этих программ – они работают только в текущей директории, а вышеприведенный скрипт обрабатывает JPEG-файлы во всех вложенных каталогах. Если же у вас несколько гигабайт фотографий в единственной директории, то такую коллекцию вряд ли приведет в порядок одно только переименование файлов!

Решением проблемы дубликатов может стать программа fdupes (http://netdial.caribe.net/~adrian2/fdupes. html, доступная в виде RPM для FC6). Программа сравнивает содержимое файлов, поэтому способна находить дубликаты даже под разными именами и временными метками.

fdupes --recurse ~/photos

выведет все дубликаты в каталоге photos. Можно удалить лишние дубли:

fdupes --recurse --omitfirst --sameline ~/photos | xargs
rm

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

Персональные инструменты
купить
подписаться
Яндекс.Метрика