Archiwa kategorii: Shell

Shell

Kopiowanie przy użyciu rsync

Synchronizowanie katalogu ze zdalnego serwera do dysk lokalny:

rsync -ave ‚ssh -p22’ –del skad@serwer:/katalog /docelowy/katalog

Kopiowanie całego systemu plików bez /proc:

rsync -ave ‚ssh -p22’ –del –exclude ‚/proc’ skad@serwer:/ /docelowy/katalog

Opcja –del powoduje, że pliki których już nie ma w źródle zostaną usunięte.

Korzystająć z rsync można łatwo robić wielokrotne kopie (np. backup), gdzie pliki bez zmian są hardlinkami, czyli nie zabierają miejsca:
rsync -av –link-dest /katalog/2 1/ 3

Jak podzielić mysqldump -all na poszczególne bazy?

Komendą mysqldump z parametrem –all-databases można zrobić zrzut wszystkich baz na serwerze do jednego pliku. Powstaje zazwyczaj wielki plik, który ciężko przeglądać. Jak wyciągnąć z niego poszczególne bazy? Używając komendy csplit można zrobić to tak:

csplit –f "baza_" mysqlbackup0101.sql "/^CREATE DATABASE /" {*}

po wykonaniu takej komendy powstanie osobny plik baza_XX dla każdej bazy z pliku źródłowego.

Przykłady wykorzystania polecenia find

Skasowanie wszystkich plików starszych niż 15 dni (21600=60*24*15)

find /mnt/backup/backup* -cmin +21600 -exec rm -r {} \;

Pokaż pliki dłuższe od 4096 bajtów
find . -type f -size +4096c
Pokaż pliki dłuższe od 386kB
find . -type f -size +386k
Pokaż pliki krótsze od 100MB
find . -type f -size -100M

Zmiana we wszystkich plikach index.php w podkatalogach $z na _$GET[‚z’] (czyli poprawienie użycia zmiennej przy ustawieniu na serwerze register_globals=off)

find */index\.php -exec sed -i 's/$z/$_GET['z']/' {} \;

find / -type d -exec ls -ld {} \; >plik
cat plik |awk '{print $5 " " $9}'|sort -n