Escolha uma Página

Introdução

Shell é realmente uma ferramenta poderosa porém como toda arma poderosa tem lá sua complexidade. O meu problema era: manter arquivos em diversas pastas sincronizados, rsync é legal mas no meu caso não servia eu tinha que copiar 1 arquivo de uma pasta x para pastas z, t, w e por ai vai! Segue o script abaixo que implementei para resolver o meu problema! Obviamente ele deve ser adaptado a sua realidade

 

#!/bin/bash
test $# -lt 1 && echo "uso: sincfile " && exit 1
path="$1"
if (! test -f $path); then
	echo $path" não é um arquivo"
	exit 1;
fi
echo "Sincronizando arquivo ("$path")
for user in $(ls -l /home | awk '{print $9'}) ; do
 
	length=$(expr length "$path")
	path_copy=""
	path_file=/home/$user/$path
	path_file_site=/home/$user/public_html/site/${path:12:$length}
 
	# verifica se existe o arquivo na pasta public_html
	if (test -f $path_file); then
		path_copy=$path_file
	fi
 
	# verifica se existe o arquivo na pasta public_html/site
	if (test -f $path_file_site); then
		path_copy=$path_file_site
	fi
 
	# se path_copy não é vazio então
	if [ -n "$path_copy" ]; then
 
		# verifica se os dois arquivos não são o mesmo
		if ! [ $path -ef $path_copy ]; then
			echo "Processou "$path" "$path_copy
			#cp $path $path_copy
		fi
	else
		echo "File Not found "$user
	fi
done