Ostatnio ktoś mnie pytał jak stworzyć obraz iso z płyty, gdy w napędzie jest płyta ;). Nie ma prostszej rzeczy: 😉
Czytaj dalej Linux – konsola – tworzenie ISO z płyty w napędzie CD-ROM
Ostatnio ktoś mnie pytał jak stworzyć obraz iso z płyty, gdy w napędzie jest płyta ;). Nie ma prostszej rzeczy: 😉
Czytaj dalej Linux – konsola – tworzenie ISO z płyty w napędzie CD-ROM
Jednym z podstawowych problemów jest walidacja danych podanych przez użytkownika do skryptu. Walidacji powinny być podane nawet opcje wywołania skryptów. Czyli powinniśmy prawdzić, czy faktycznie dana opcja, której użył użytkownik istnieje. Mój sposób na to jest prosty:
sub usage(); ## prototype of usage() function usage() if (! GetOptions( …. )) usage() if ($usage);
ps. tak, stworzyłem podstronę Sztuczki -> Perl, na której będę podsumowywał moje nalepsze praktyki ;). Nie jestem ekspertem ale ma to mi pozwolić lepiej zarządzać moją wiedzą…
Szukałem po sieci z znalazłem takie stronki
Muszę to przetestować 😀
Probując rozwiązac pewien problem przeglądałem sobie opcje konfiguracje programu logrotate. Zauważyłem kilka ciekawych opcji, z których do tej pory nie korzystałem. Więc tak, program można uruchomić z opcją -d (debug), wtedy program nic nie będzie robił, tylko pokaże co chciałby zrobić, np:
rotating pattern: /var/log/rpmpkgs weekly (no old logs will be kept) empty log files are not rotated, old logs are removed considering log /var/log/rpmpkgs log does not need rotating rotating pattern: /var/log/wtmp monthly (1 rotations) empty log files are rotated, only log files >= 1048576 bytes are rotated, old logs are removed considering log /var/log/wtmp log does not need rotating
Inną ciekawą opcją jest możliwość wstawiania daty w nazwę zamiast kolejnych numerów: dateext, kolejna to maxage która powoduje usunięcie logów po określonej ilości dni (nie ilości rotacji!). Musze tylko sprawdzić jak to działa z delaycompress 😀
Proste polecenie dodane do crona (patrz niżej) pozwala zapisać aktualną listę partycji do plików. Pliki w formacie dump-a z polecenia sfdisk mogą być wykorzystane do otworzenia układu partycji.
for DISK in `sfdisk -l 2>/dev/null | grep Disk | sed 's/[:\/]/ /g' | awk '{ print $3}'`;do sfdisk -d /dev/$DISK > /backups/disks_layout/${DISK}.out; done
W moim przypadku uzyskujemy pliki:
[root@centos storage1]# ls -l /backups/disks_layout/ total 12 -rw-r--r-- 1 root root 412 Jul 13 19:31 hda.out -rw-r--r-- 1 root root 251 Jul 13 19:31 sda.out -rw-r--r-- 1 root root 250 Jul 13 19:31 sdb.out
a przykładowy plik ma postać:
[root@centos storage1]# cat sdb.out # partition table of /dev/sdb unit: sectors /dev/sdb1 : start= 63, size=2930272002, Id= c /dev/sdb2 : start= 0, size= 0, Id= 0 /dev/sdb3 : start= 0, size= 0, Id= 0 /dev/sdb4 : start= 0, size= 0, Id= 0
Przygotowując się do najgorszego należy widzieć jakie dyski mamy w systemie (by móc później otworzyć taką samą konfuracje dysków), tylko jak to sprawdzić? Najprościej użyć fdisk -l ;). Jeżeli nie podamy urządzenia, które nas intersuje, wylistuje informację o wszystkich dyskach!
[root@centos data1]# fdisk -l | grep "Disk" Disk /dev/hda: 40.0 GB, 40020664320 bytes Disk /dev/sda: 1500.2 GB, 1500299395072 bytes Disk /dev/sdb: 1500.3 GB, 1500301910016 bytes
Wynik polecenia proponowałbym zapisywać na twardy dysk co jakiś czas (np. raz w tygodniu) i umiesczać w backupie. Pozwoli nam to w najgorszym przypadku odczytać plik z kopii zapasowej, na jego podstawie stworzyć tablicę partycji i wtedy można już używać Baculy ;).
[root@centos storage1]# bscan -v -m FileStorage_USBDisk2 -V USB2Volume002 bscan: butil.c:281 Using device: "FileStorage_USBDisk2" for reading. 13-Jul 07:41 bscan JobId 0: Ready to read from volume "USB2Volume002" on device "FileStorage_USBDisk2" (/backups/bacula/storages/storage1). bscan: bscan.c:308 Using Database: bacula, User: bacula bscan: bscan.c:450 Pool record for File found in DB. bscan: bscan.c:464 Pool type "Backup" is OK. bscan: bscan.c:474 Media record for USB2Volume002 found in DB. bscan: bscan.c:492 Media type "File" is OK. bscan: bscan.c:502 VOL_LABEL: OK for Volume: USB2Volume002 bscan: bscan.c:520 SOS_LABEL: Found Job record for JobId: 6 13-Jul 07:43 bscan JobId 0: End of Volume at file 0 on device "FileStorage_USBDisk2" (/backups/bacula/storages/storage1), Volume "USB2Volume002" bscan: bscan.c:337-6 ========== JobId=0 ======== bscan: bscan.c:337-6 ========== JobId=6 ======== bscan: bscan.c:342 Create JobMedia for Job BackupLaptopCzz60610.2010-07-13_06.12.01_12 bscan: bscan.c:966 Updated Media record at end of Volume: USB2Volume002 13-Jul 07:43 bscan JobId 0: End of all volumes. bscan: bscan.c:966 Updated Media record at end of Volume: USB2Volume002 bscan: bscan.c:637 End of all Volumes. VolFiles=0 VolBlocks=0 VolBytes=50,084,965 Records would have been added or updated in the catalog: 1 Media 1 Pool 1 Job 397 File [root@centos storage1]#
Cóż, jako początkujący użytkownik baculi, możecie mieć problem z określeniem co znaczy określona wartość w jobstatus. Informacja ta jest zapisana w bazie danych:
Cóż, pewnie wszyscy to znają le ja odkryłem znowu:
http://tldp.org/LDP/abs/html/index.html
Warto przeczytać i nauczyć się…
Update:
Ciekawą stroną opisującą zaawansowane możliwości Bash-a jest:
http://leksykot.top.hell.pl/tech/bash_string
CentOS to system operacyjny, który jest przekompilowaną komercyjną wersją dystrybucji RedHat Enterprise (z pewnymi wyjątkami). Jako że RedHat Enterprise jest powszechnie używany postanowiłem zainstalować CentOS-a ;). Niestety brakuje w nim dużo oprogramowania dostępnego w normalnych dystrybucjach :/ Jakby ktoś szukał Baculi, znajdzie pod adresem: http://www.pramberger.at/peter/services/repository/rhel5/ (będzie działać także w CentOS-ie).