Quantcast
Channel: ProNAS - forum serwerów plików NAS i dysków sieciowych
Viewing all articles
Browse latest Browse all 817

Automatyczne mapowanie zasobów pod jedną literą

$
0
0
Proszę przeczytać poradnik do końca przed wykonaniem jakichkolwiek czynności, na dole są objaśnienia dla osób nieznających z linuxa.
Jeśli nie wiesz zapytaj!


Pomysł mapowania zasobów pod jedną literę zaczerpnąłem z innego tutoriala zamieszczonego w tym dziale: mapowanie-wszystkich-zasobow-pod-jedn-liter-t2175.html

Problem: Dodajemy nowy zasób współdzielony lub też nie, co wymusza utworzenie nowego folderu a następnie edycję pliku autorun.sh z powyżej przywołanego poradnika żeby bindować nowy zasób.
Moim celem było zautomatyzowanie tego procesu. W efekcie napisałem sobie skrypt, który sprawdza które zasoby są już podmontowane, jeśli są jakieś nowe skrypt tworzy podfolder do którego binduje zasób. Unikamy w ten sposób także podwójnego bindowania.

Na początku mamy:
/volume1/audio
/volume1/video
/volume1/photo
itp.

Zgodnie z powyżej linkowanym przeze mnie poradnikiem chcemy utworzyć folder:
/volume1/allshares
W którym utworzymy podfoldery audio, video, photo, do których będą zbindowane odpowiednio: /volume1/audio /volume1/video /volume1/photo itp.
I tą ostatnią czynność wykona nam skrypt. Dodatkowo dodany do crona może tą czynność ponowić, więc jeśli za jakiś czas postanowimy dodać nowy folder współdzielony lub też uruchomić nową usługę, np. serwer www, po wykonaniu zadania crona uzyskamy nowy zasób w /volume1/allshares, tym samym jak /volume1/allshare mamy już wcześniej zamapowane pod jakąś literą, nie musimy nic robić aby w windowsie widzieć nowy zasób.

1. Logujemy się do DSM i tworzymy nowy folder wspóldzielony o nazwie "allshares" i zaznaczamy aby był on ukryty w moim otoczeniu sieciowym.
2. Tworzymy plik autobind.sh o następującej zawartości:
Kod (Text):
  1.  
  2. #!/bin/sh
  3. foldery=`ls /volume1 | grep -vE "@|quota|lost\+found|homes|allshares"`
  4. for x in $foldery
  5. do
  6. zbindowane=`df -a | grep allshares | awk '{print $6}' | sed -e 's/\// /g' | awk '{print $3}' | grep -i $x | wc -l`
  7. if [ $zbindowane = 0 ]; then
  8. mkdir -p /volume1/allshares/"$x"
  9. mount --bind /volume1/"$x" /volume1/allshares/"$x"
  10. fi
  11. done
  12.  
3. Wykonujemy z linii poleceń
chmod +x autobind.sh
4. Przenosimy plik autobind.sh najlepiej do /usr/syno/etc/rc.d/
5. Tworzymy zadanie crona które uruchomi nam skrypt /usr/syno/etc/rc.d/autobind.sh o wybranej godzinie, np. raz dziennie
6. Jeśli wczesniej tego nie zrobiliśmy mapujemy w windowsie /ip_naszego_synology/allshares pod wybraną literę dysku, np. Z:

Objaśnienia (szczególnie dla nieznających linuxa):
1.
foldery=`ls /volume1 | grep -vE "@|quota|lost\+found|homes|allshares"`
Tworzy zmienną która wylistuje nam wszystkie foldery z volume1, wykluczając za pomocą grep -vE foldery zawierające w nazwie @, quota, lost+found, homes i oczywiście allshares żeby się nie zapętlić, aby wykluczyć jakiś dodatkowy folder z mapowania pod jedną literę trzeba je dopisac w cudzysłowie odzielając znakiem |, czyli np.
foldery=`ls /volume1 | grep -vE "@|quota|lost\+found|homes|allshares|web"`
spowoduje, że dodatkowo folder web nie będzie widoczny w allshares tym samym nie będzie pod zamapowaną literą.

2.
zbindowane=`df -a | grep allshares | awk '{print $6}' | sed -e 's/\// /g' | awk '{print $3}' | grep -i $x | wc -l`
Sprawdza, czy poszczególne foldery z /volume1 są już zamontowane w allshares, jeśli nie są w dalszej części skryptu jest dla nich tworzony podfolder w allshares a nastepnie wykonywane jest montowanie.

Pewnie można pewne potoki uprościć ale chciałem żeby było przejrzyście (w miarę możliwości)

Viewing all articles
Browse latest Browse all 817

Trending Articles


TRX Antek AVT - 2310 ver 2,0


Автовишка HAULOTTE HA 16 SPX


POTANIACZ


Zrób Sam - rocznik 1985 [PDF] [PL]


Maxgear opinie


BMW E61 2.5d błąd 43E2 - klapa gasząca a DPF


Eveline ➤ Matowe pomadki Velvet Matt Lipstick 500, 506, 5007


Auta / Cars (2006) PLDUB.BRRip.480p.XviD.AC3-LTN / DUBBING PL


Peugeot 508 problem z elektroniką


AŚ Jelenia Góra