Как удалить все пустые директории
Делаю инкрементальный бекап в ходе которого rsync выдает множество пустых папочек - мне пустые папочки не интересны - их нужно как то удалить. В bash это можно сделать следуюшим образом:
find . -type d | tac | xargs rmdir 2> /dev/null
Как найти все жесткие ссылки на файл
Чтобы найти все жесткие ссылки на файл, сначала выполнием ls и смотрим какой у файла inode, затем скармливаем этот inode команде find:
> ls -li filetosearch.txt
9964445 -rwxrwxrwx 2 root root 1813 Sep 25 03:06 filetosearch.txt
> find /home -xdev -inum 9964445
SSH без пароля
Краткая инструкция как настроить доверительные отношение между двумя машинами по ssh. Мне она нравится тем что все команды выполнятся на одной машине.
Даны два компьютера server1 и server2, пользователей будут звать user1 и user2 соответственно.
Зaходим на server1
ssh-keygen -t rsa
выбираем имя файла по умолчанию - просто жмем enter
парольная фраза должна быть пустой если вы вы не хотите чтобы вместо пароля сервера спрашивалась парольная фраза ключа
создаем папочку .ssh на удаленной машине
ssh user2@server2 mkdir -p .ssh
добавляем ключ в конец файла
cat ~/.ssh/id_rsa.pub | ssh user2@server2 'cat >> .ssh/authorized_keys'
пробуем соединиться по ssh - если все сделано правильно - пароль при этом не должен спрашиваться.
Следует учесть что папка .ssh должна иметь права доступа 700 а файл с ключами 640 если это не так - нужно поправить
на моей системе файл с ключами называется authorized_keys2 в то время как обычно он называется authorized_keys
Когда пробовал выполять команды ssh получил stdin: is not a tty — проблема разрешилась удалением .bashrc из пользовательской папки.
Upd: как оказалось позже совсем удалять .bashrs не обязательно - теряются многие полезные настройки, достаточно закоментировать несколько строчек:
# Source global definitions #if [ -f /etc/bashrc ]; then # . /etc/bashrc #fi
Как поставить модуль для Perl
Понадобилось установить на сервер перловый модуль File::RSyncP. При попытке поставить методом "в лоб" получил следующее:
Insecure dependency in require while running with -T switch at /usr/lib/perl5/5.8.8/Pod/Perldoc.pm line 1634.
Однако, как оказалось метод в лоб не всегда применим для перловых модулей и лучше использовать специальный "шелл":
Запускаем шелл:
perl -MCPAN -eshell
далее набираем:
install File::RSyncP
Нужный модуль автоматически скачается и установится.