Posts Tagged administration

rsync: cannot delete non-empty directory

A p (modifier) indicates that an (include/exclude/...) rule is perishable, meaning that it is ignored in directories that are being deleted. (из man rsync)

Има няколко причини, поради които rsync може да ви върне следната грешка:

cannot delete non-empty directory: some_dir_name
  1. Ако сте използвали -b или --backup. Тогава rsync не трие нищо от destination. За да модифицирате това поведение, вижте описанието на --backup в man rsync.
  2. Ако ползвате --exclude правила. Тези правила “предпазват” файлове в destination от изтриване, от което следва, че папка, изтрита в source няма да може да бъде изтрита в destination, ако съдържа “предпазени” от правилата файлове, дори да сте задали --delete --force. Решението е да дефинирате exclude-правилото като perishable.

    Например, ако синхронизирате директориите source и destination, които са под subversion-контрол с rsync, можете да ползвате следната команда:

    rsync -rv --delete --force --filter 'exclude,p .svn' 'source' 'destination'

    В случя избягваме синхронизирането на системните за subversion директории .svn, като въпреки това твърдим, че правилото, “защитаващо” .svn-директориите от прехвърляне, не важи в директории, които подлежат на изтриване (т.е. правилото е perishable).

За повече информация, вижте секцията FILTER RULES и потърсете вътре за “perishable” в man rsync.

, , , ,

No Comments

Чакалене на IP/host за наличие на пинг

Съвсем скоро (да кажем, преди 10 минути) ми се наложи да чакам да се появи пинг към дадено IP. За целта си написах shell-скриптчето, показано по-долу, което да ми “каже” нещо, в момента, в който се появи ping към съответното IP. Някой може да го намери за полезно:

dimitardimitrov@Midori:~$ cat monitor-host.sh
#!/bin/bash

if [ "$#" -lt 1 ]
then
	echo "Usage: $0 host.to.monitor"
	exit 1
fi 

host="$1"

while true
do
	ping -c 1 $host
	if [ "$?" -eq "0" ]
	then
		say The host is now online! I repeat: "The host is now online!".
		exit
	fi
	sleep 1
done

За да работи, е необходимо да имате команда say, която да прави каквото се очаква :) Може да бъде заменена и с нещо друго, разбира се. Чувствайте се свободни да ползвате това парче “код” както искате.

, , , ,

No Comments