Witaj na Forum Linuxiarzy
Zanim zalogujesz się, by pisać na naszym forum zapoznaj się z kilkoma zasadami savoir-vivre'u w wątku Administracja-> Przywitaj się. Wątki z problemami zamieszczone w dziale "Przywitaj się" będą usuwane.

Autor Wątek: Dowiązanie symboliczne do najnowszego katalogu  (Przeczytany 1108 razy)

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Dowiązanie symboliczne do najnowszego katalogu
« dnia: Marzec 01, 2019, 10:59:45 am »
Witam,
Do katalogu domowym jednego z użytkowników istnieje katalog o nazwie "kopie".
Tworzą się tam katalogi z kopiami z każdego dnia na 7 dni wstecz. Te 7 dostępnych katalogów jest nazwane datami także nazwa każdego z nich wygląda tak "DD-MM-RRRR"
Chciałbym utworzyć takie dowiązanie symboliczne, aby zawsze kierowało ono do najnowszego katalogu.
Czy da się coś takiego zrobić w debian 8?

Offline arecki

  • Full Member
  • ***
  • Wiadomości: 101
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #1 dnia: Marzec 01, 2019, 11:45:33 am »
Skoro jakiś program tworzy kopię, to można mu też dodać do listy zadań odświeżanie linku.
Czemu musi to być link symboliczny?
Prościej byłoby to załatwić aliasem.
Debian testing.

Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1335
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #2 dnia: Marzec 01, 2019, 12:19:24 pm »
Skoro jakiś program tworzy kopię, to można mu też dodać do listy zadań odświeżanie linku.

"Odświeżyć" to raczej się nie da, bo np:

/10.01.2019(katalog)---->/Ostatni_backup(softlink)
więc niemożliwe jest, by

/22.01.2019(katalog)---->/Ostatni_backup(softlink)
był prawidłowy, ale masz rację, dodanie do listy zadań prostego:

ln -s /22.01.2019 /Ostatni_backup
zautomatyzuje cały proces

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #3 dnia: Marzec 01, 2019, 12:36:24 pm »
Program tworzący kopię znajduje się na innym serwerze (pobiera dane), jednak na tym serwerze też mógłbym dodać do listy zadań taką komendę...
Problem w tym, że codziennie będzie to inny katalog (inna data, a więc inna nazwa).
Potrzebuję to zrobić gdyż skrypt rsync na innym serwerze pobierający kopię nie wymagałby rekonfiguracji gdyż za pomocą jednego mechanizmu kopiowane byłoby to co chcę.

Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1335
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #4 dnia: Marzec 01, 2019, 01:16:08 pm »
Problem w tym, że codziennie będzie to inny katalog (inna data, a więc inna nazwa)

To wszystko jest do zrobienia, tylko podajesz za mało danych.
Jedno, co mogę podpowiedzieć, to operacja, o której wspomniałem, powinna być przeprowadzona ze skryptu na serwerze z rsyncem...

Offline arecki

  • Full Member
  • ***
  • Wiadomości: 101
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #5 dnia: Marzec 01, 2019, 01:17:18 pm »
A jakie zadanie wykonujesz na "tym serwerze", że potrzebujesz do tego linku symbolicznego?
Debian testing.

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #6 dnia: Marzec 01, 2019, 02:58:45 pm »
Chodzi o to, że skrypt rsync na serwerze źródłowym najpierw listuje katalogi poniższym kodem umieszczonym w plik ExcludeVPS.list (podpowiedzianym zresztą w innym temacie przez TataPingu)
#
#--napiane przez TataPingu z forum linuxiarze.pl
#
- **/@eaDir
- /lost+found
#--tutaj możesz wyłączyć  dowolną domenę
#- /domenadowyłączenia
#--tutaj możesz wyłączyć  dowolną domenę
+ **/
+ **/public_html/**
- *
a potem pobiera je w odpowiednie miejsce na serwer docelowy.
Jak wynika z powyższego kodu źródłowego, wyszukiwane (następnie pobierane) są katalogi o nazwie public_html jednak jest jeden katalog, który nazywa się inaczej i jest w innym miejscu, a chciałbym go także za pomocą jednego mechanizmu rsync móc pobierać.
Wymyśliłem więc, że utworzę dowiązanie symboliczne o nazwie "public_html", a odpowiedni parametr rsync skopiuje także i tą zawartość.
Tyle, że problem jest taki, że codziennie interesujący mnie katalog nazywa się inaczej.
Jednak tak patrzę to czy TataPingu, który tu się wypowiada nie podpowiedziałby, jak do tego pliku ExcludeVPS.list dopisać po prostu kolejną ścieżkę do wylistowania :)

Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1335
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #7 dnia: Marzec 01, 2019, 05:35:31 pm »
Jednak tak patrzę to czy TataPingu, który tu się wypowiada nie podpowiedziałby, jak do tego pliku ExcludeVPS.list dopisać po prostu kolejną ścieżkę do wylistowania :)

Aaaa, to o to chodzi...
- przypomnij mi linkiem o jaki temat chodziło, bo nie pamiętam, to spróbujemy coś zaradzić...

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #8 dnia: Marzec 01, 2019, 05:58:21 pm »
https://linuxiarze.pl/forum/index.php/topic,3288.15.html
 :)

Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1335
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #9 dnia: Marzec 01, 2019, 06:54:05 pm »
Na wstepie przepraszam, ze nie mam teraz polskich czcionek, pisze z takiego sprzetu, ze nie ma sensu tego korygowac.

Wez po prostu rozszerz nasz skrypt i stworz dodatkowy plik, np. ExcludeVPS1.list

#!/bin/bash
#
#--napiane przez TataPingu z forum linuxiarze.pl
#
#
# CONFIG
#
LOGFILE=/var/log/BackupVPS.log
#
ZRODLO=root@111.22.33.44:/home/
#
#----TUTAJ DODAJ-------
ZRODLO1=root@111.22.33.44:/home/INNA/SCIEZKA/DO/KOPIOWANIA
#----TUTAJ DODAJ-------
#
KLUCZ="ssh -p 1111 -i /sciezka/do/kluczaSSH"
CEL=/katalog/z/backupem
EXCLUDEFILE=/opt/BackupVPS/ExcludeVPS.list
#
#----TUTAJ DODAJ-------
EXCLUDEFILE1=/opt/BackupVPS/ExcludeVPS1.list
#----TUTAJ DODAJ-------
#
# END CONFIG

#---- ALGORYTM
#
echo "Dnia $(date) backup domen rozpoczęty" >> "${LOGFILE}"
sleep 1s
#
# i teraz możesz użyć mojego algorytmu (przetestowany lokalnie działa poprawnie
# jak będzie z "kluczem" tego nie wiem)
#
#### rsync -r -t -p -o -g -v --progress --delete --modify-window=1 -l -H --exclude-from="${EXCLUDEFILE}" "${KLUCZ}" "${ZRODLO}" "${CEL}"
#
#----TUTAJ DODAJ-------
#### rsync -r -t -p -o -g -v --progress --delete --modify-window=1 -l -H --exclude-from="${EXCLUDEFILE1}" "${KLUCZ}" "${ZRODLO1}" "${CEL}"
#----TUTAJ DODAJ-------
#
# albo Twojego (odpowiednio dopasowałem)
#
rsync -chavzP --stats -e "ssh -p 1111 -i /sciezka/do/kluczaSSH" --exclude-from="${EXCLUDEFILE}" "${ZRODLO}" "${CEL}"
#
#----TUTAJ DODAJ-------
rsync -chavzP --stats -e "ssh -p 1111 -i /sciezka/do/kluczaSSH" --exclude-from="${EXCLUDEFILE1}" "${ZRODLO1}" "${CEL}"
#----TUTAJ DODAJ-------
#
#---- ALGORYTM
#
echo "Dnia $(date) backup domen zakończony pomyślnie" >> "${LOGFILE}"
sleep 1s
#
exit 0

Oczywiscie, wszystko dopasuj do struktury, ktora wczesniej zrobiles...
- ale mysle, ze nie powinienes miec zadnych problemow,,,

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #10 dnia: Marzec 02, 2019, 01:57:10 pm »
Ok, dzięki, rozumiem wszystko z tym ExcludeVPS1.list natomiast zauważ, że mi chodzi aby ten plik powodował pobranie tylko jednego katalogu ze źródła.
W źródle znajduje się zawsze 7 katalogów, a ich nazwami jest data. Codziennie dochodzi jeden katalog z najnowszą datą i usuwany jest jeden katalog z najstarszą datą.
Ze względu na ograniczone miejsc zależy mi na pobraniu wyłącznie najnowszego katalogu (najnowsza data) więc ExcludeVPS1.list powinien wyglądać chyba inaczej.

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #11 dnia: Marzec 07, 2019, 12:28:16 pm »
Czy da się coś w tym kierunku zrobić, aby wylistować jeden najnowszy katalog?

Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1335
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #12 dnia: Marzec 08, 2019, 10:18:41 pm »
Czy da się coś w tym kierunku zrobić, aby wylistować jeden najnowszy katalog?

Nie odpowiadałem długo, bo zarazki jakiegoś świństwa wymusiły na mnie zrobienie "przymusowej" przerwy i kilkudniowej kuracji ;)

Chmmm, z tym "pobraniem tylko jednego katalogu" o dowolnej i przypadkowej nazwie (ok, nazwa to data) może być trochę problematyczne. Rsync na pewno nie przewiduje takiej opcji....
Tu musiałbyś dobudować dodatkowy skrypt, albo ew. odpowiednio spreparować zmienną "ZRODLO1=" w połączeniu z  $(date).
Czy to drugie w ogóle jest możliwe, tego nie wiem, tak tylko nasunęło mi się w pierwszym momencie, a nawet, gdyby było możliwe, to za dużo mamy tutaj czynników, które mogłyby zakłócić działający algorytm.
Jedynie dodatkowy skrypt, ale w takim przypadku zadanie staje się coraz bardziej skomplikowane...
- gdyby to jeszcze był jakiś serwer z "prawdziwego zdarzenia", to można by się pokusić stworzyć coś działającego, ale przy tym NASie (jeśli dobrze pamiętam) to raczej nie ma wielkiego pola do popisu.

Najprostszym rozwiązaniem będzie powiększenie, czy dołożenie HDD w NASie. Prawdopodobnie masz tam interfejs USB, więc wystarczy przekierowanie strumienia rcync na USB-HDD i masz problem rozwiązany

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Dowiązanie symboliczne do najnowszego katalogu
« Odpowiedź #13 dnia: Marzec 13, 2019, 05:31:41 pm »
Dziękuję TataPingu za zaangażowanie.
Jednak po głębszym zastanowieniu tej komendy
rsync -avHzL --stats -e "${KLUCZ}" --exclude-from="${EXCLUDEFILE}" --numeric-ids --link-dest=$LAST_BACKUP $ZRODLO/ $NEW_BACKUP/doczytałem, że opcja "--link-dest wyszuka i porówna w katalogu docelowym pliki, które mają być backupowane i jeśli nie będzie zmian to utworzy hardlinka, a że są tam w dużej mierze powtarzające się kopie więc nie ma aż tak dużego przyrostu danych więc "nie warta skórka za wyprawkę"
... ale i tak dzięki.