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

LXF84:Ответы

Материал из Linuxformat
Версия от 16:19, 22 января 2009; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Есть вопрос по Open Source? Пишите нам по адресу: answers@linuxformat.ru

Ответы

Без паники...

В Я установил игру Pipepanic с DVD к LinuxFormat [HotPicks, LXF82] в свою домашнюю директорию и запускаю ее, набрав ./pipepanic в консоли:

cd Pipepanic-0.1.3-source
./Pipepanic

Но не могу добавить соответствующий пункт в меню KDE, поправив меню в Центре Управления KDE: не знаю, что набирать в поле команды. Если я помещаю туда /home/marrea/pipepanic-0.1.3-source/pipepanic, а затем выхожу и щелкаю на добавившемся пункте меню Pipepanic, то вижу лишь кувыркание песочных часов и кнопку на панели задач. Секунд через 30 все исчезает. Это потому, что я установил Pipepanic в свою домашнюю директорию? Marrea, с форума LXF

О Дело вот в чем: запуская игру из меню KDE, Вы находитесь не в директории Pipepanic. Программа должна запускаться из своей директории, чтобы найти нужные ей файлы. Это можно исправить, добавив /home/marrea/Pipepanic-0.1.3-source/ в поле рабочего каталога в редакторе меню KDE – по сути, добавив команду смены каталога перед запуском, которую вы выполняете в консоли. Возможно, также понадобится указать полный путь к файлу. Самый безопасный способ убедиться, что все правильно – воспользоваться диалогами выбора файлов, вызываемых по щелчку на пиктограммах справа от соответствующих полей. Если вы установите опцию запуска в терминале, вы увидите весь вывод программы и, возможно, поймете, в чем проблема. Именно так я узнал, что игре не удалось найти файл. В конец запускаемой команды добавьте что-нибудь вроде ; sleep 5, чтобы окно терминала оставалось открытым еще пять секунд после завершения программы:

/home/marrea/Pipepanic-0.1.3-source/Pipepanic; sleep 5

НБ

Скрупулезный скрипт

В Попытался написать скрипт для резервирования важных данных из домашней директории на USB-диск с помощью rsync, и теперь нахожусь в затруднении: озадачили опции --exclude-from и особенно --include-from. У меня Ubuntu 6.06 и rsync 2.6.6.

Вот приблизительно то, что мне нужно. Во-первых, скопировать нескрытые файлы и директории (включая вложенные), находящиеся в домашнем каталоге /home/dcoldric; исключение – /home/dcoldric/MyDownloads, где поддиректории копировать не надо, только обычные файлы. Еще одно исключение – не хочу резервировать кое-какие нескрытые каталоги, вроде /home/dcoldric/cxoffice.

Все скрытые файлы и директории должны быть проигнорированы, кроме нескольких. Например, я хочу сохранить /home/dcoldric/.netbeans со всеми поддиректориями, а также .bashrc и .bash_aliases. И, наконец, я бы хотел, чтобы структура директорий каталога резервных копий была такой же, как и в моем домашнем каталоге (не считая, конечно, игнорируемых директорий).

Я перепробовал все, что пришло в голову, но безрезультатно. Мой последний вариант выглядел так:

rsync -a --delete --safe-links --exclude-from=/home/dcoldric/bin/backupExcludes /home/dcoldric/ 
/media/USB/backup/dcoldric

– при следующем содержимом файла backupExcludes:

- /*
+ /dcoldric/
+ /dcoldric/.Creator/
+ /dcoldric/.java/
+ /dcoldric/.mozilla/
+ /dcoldric/.mozilla-thunderbird/
+ /dcoldric/.netbeans/
+ /dcoldric/.bashrc
+ /dcoldric/.bash_aliases
+ /dcoldric/MyDownloads/
- /dcoldric/MyDownloads/*/
- /dcoldric/.*
- /dcoldric/cxoffice
- /dcoldric/jdk*
- /dcoldric/sun
-/dcoldric/SUNW*

Однако ничего не работает.

Дэвид Колдрик [David Coldrick]

О Команда rsync по умолчанию копирует все, а опция --exclude задает то, что нужно пропустить. Проще думать, что --include – это --do-not-exclude. Указываемый параметр-файл --exclude-from – фактически файл фильтра. Фильтрация предоставляет контроль, но не имеет варианта --filter-from. Вот более корректный способ использовать фильтр:

--filter=”merge myfilterfile”

Ваш текущий фильтр не работает, поскольку начинается с -/*, то есть с указания игнорировать все. Вы говорите, что ничего не происходит – и Вы правы, но программа тоже права, поскольку делает то, что ей велено. Так как начинает она с первого вхождения, то перенесите -/* в конец. Когда фильтр начинается с /, он считает от указанного исходного пути (в данном случае получается ~/dcoldric), так что удалите /dcoldric из начала каждой строки, иначе rsync припишет это лишний раз и будет искать /home/dcoldric/dcoldric/.mozilla и так далее. Хотя это не относится к Вашему текущему фильтру, следует знать, что

+ /foo/bar/
- /*

ничего не найдет, поскольку /* исключит все каталоги из исходной директории и foo не будет проверяться никогда, значит, /foo/bar не будет найден. Вы должны явно указать сканирование foo:

+ /foo/
+ /foo/bar/
- /foo/*
- /*
+ /.netbeans/
+ /.bashrc
+ /.bash_aliases
- /MyDownloads/*/
- /.*
- /cxoffice
- /jdk*

Вызывается он такой командой:

rsync -a --delete --safe-links --filter=”merge ~dcoldric/bin/backupFilter” 
~dcoldric/ /media/USB/backup/dcoldric/

Обратите внимание на завершающий каталог назначения /, он может повлиять на результат. НБ

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