Bash - skrypt do kopiowania katalogu w inne miejsce
Bash - skrypt do kopiowania katalogu w inne miejsce
Mam pytanie, jak napisać skrypt, który będzie kopiować katalog z zawartością do nowego katalogu, który będzie w nazwie mieć dzisiejszą datę np 20101208.
Ale ten skrypt ma tworzyć ten nowy katalog z datą? Czy ma robić zwykłe cp jednego katalogu do innego (który już jest utworzony i ma człon nazwy identyczny jak nazwa kopiowanego katalogu, tyle tylko że ma jeszcze w tej nazwie datę)?
Szczerze to nie rozumiem po co do tak prostego zdania potrzebny jest skrypt
Szczerze to nie rozumiem po co do tak prostego zdania potrzebny jest skrypt

W takim razie postaram się odpowiedzieć precyzyjnie na zadane pytanie.
Do napisania tego skryptu będziesz potrzebował:
Następnie fajnie by było zadeklarować jakąś zmienną, która będzie przechowywała dla ciebie datę w odpowiednim formacie (do tego przyda się podpunkt b.).
W kolejnym kroku przydałoby się polecenie tworzące odpowiedni katalog, w odpowiednim miejscu (patrz podpunkt c.), z tym że nazwa katalogu docelowego, powinna łączyć się ze zmienną przechowującą datę w odpowiednim formacie.
I na koniec ostatnie, lecz najważniejsze - kopiowanie. Jeśli ścieżki do katalogów mają być sztywne (czyli skrypt ma działać tylko dla katalogów zawartych w jego wnętrzu) wystarczy posłużyć się składnią:
Jeśli skrypt ma być bardziej uniwersalny poczytaj jak przekazać do niego jakieś wartości ($1, $2, $3 itp.). Następnie podmienić nazwy katalogów na nazwy zmiennych i powinno działać. Jeśli we wnętrzu katalogu źródłowego znajduje się coś poza plikami trzeba by też sprawdzić przełączniki kopiowania (tu patrz podpunkt d.).
Ja bym radził właśnie tak napisać ten skrypt.
Do napisania tego skryptu będziesz potrzebował:
- Trochę czasu.
- Zapoznanie się z:
Kod: Zaznacz cały
man date
- Zapoznanie się z:
Kod: Zaznacz cały
man mkdir
- Zapoznanie się z:
Kod: Zaznacz cały
man cp
Kod: Zaznacz cały
#!/bin/bash
W kolejnym kroku przydałoby się polecenie tworzące odpowiedni katalog, w odpowiednim miejscu (patrz podpunkt c.), z tym że nazwa katalogu docelowego, powinna łączyć się ze zmienną przechowującą datę w odpowiednim formacie.
I na koniec ostatnie, lecz najważniejsze - kopiowanie. Jeśli ścieżki do katalogów mają być sztywne (czyli skrypt ma działać tylko dla katalogów zawartych w jego wnętrzu) wystarczy posłużyć się składnią:
Kod: Zaznacz cały
cp /katalog_źródłowy/* /katalog_docelowy_z_datą
Ja bym radził właśnie tak napisać ten skrypt.
Dziękuję za sugestie.
Dzisiaj rano napisałem pierwszy skrypt w Linuksie. Dodam, że zadziałał.
Dzisiaj rano napisałem pierwszy skrypt w Linuksie. Dodam, że zadziałał.
Kod: Zaznacz cały
#!/bin/bash
# BACKUP
BACKUP_SOURCE="/home/zapas/" # katalog zrodlowy
DESTINATION_DIR=$(date +%F) # nazwa katalogu z dzisiejsza data RRRR-MM-DD
#----------------------------------------------------------------------------------------------
mkdir "/home/admin/user_backups/zapas/${DESTINATION_DIR}"
cp -a "$BACKUP_SOURCE/"* "/home/admin/user_backups/zapas/${DESTINATION_DIR}/"