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 |