Προς το περιεχόμενο

System tar & restore Project


Προτεινόμενες αναρτήσεις

Δημοσ.

κλεισε και το destination path με ' ' και ειναι κομπλε τα arguments.

 

done

 

 

Επίσης γιατί δεν έχει sudo μπροστά;

Done

 

 

Αλλά στην γραμμή του execute θεωρεί ότι το backup είναι στο /usr/bin

 

Ό,τι είναι στο PATH. Άμα θέλετε μπορούμε να το βάζουμε να το διαλέγει βάζοντας σαν default το αποτέλεσμα του "which backup.sh"

  • Απαντ. 1,6k
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Μήπως είναι πιο απλό να συγχωνευτούν τα url και file; Ουσιαστικά σε ενδιαφέρει να έχεις ένα path. Το αν θα είναι στον τοπικό δίσκο ή στο δίκτυο μικρή σημασία έχει. Μετά μέσα από το script τσεκάρεις αν υπάρχει το http στην αρχή του path.

 

https://en.wikipedia.org/wiki/Uniform_resource_identifier

 

Μου βγάζει backup.sh not found.

 

 

Δεν το έχεις εγκατεστημένο;

Δημοσ.

Μήπως είναι πιο απλό να συγχωνευτούν τα url και file;

 

Ειναι ξεχωριστα arguments + το url εχει και αλλα arguments για optional username και password + για το file υπαρχει και ελεγχος:

 

1. Αν το αρχειο οντως υπαρχει

2. Αν ειναι οντως archive

 

Απλα μπορεις να βαλεις το -f να ακυρωνει τα -u -n -p και τουμπαλιν

 

Η μπορεις να μη βαλεις τιποτα, ασε τον χρηστη να βαζει οτι θελει και να αναλαβει το script το error handling.

Δημοσ.

Το κατεβάζω από το github. Δεν το έχω βάλει από το AUR. 

 

Για το default terminal μήπως θα έπρεπε με έναν τρόπο να αναγνωρίζει πρώτα το DE/WM; Δεν κρατάνε κάπου κάποιο αρχείο με τα defaults τα De ή ο WM; Θα μπορούσες να το βρεις από εκεί.

 

Αν είναι κοτσάνα αυτό που είπα μην με λιντσάρετε.

Δημοσ.

Ειναι ξεχωριστα arguments + το url εχει και αλλα arguments για optional username και password + για το file υπαρχει και ελεγχος:

 

1. Αν το αρχειο οντως υπαρχει

2. Αν ειναι οντως archive

 

Απλα μπορεις να βαλεις το -f να ακυρωνει τα -u -n -p και τουμπαλιν

 

Η μπορεις να μη βαλεις τιποτα, ασε τον χρηστη να βαζει οτι θελει και να αναλαβει το script το error handling.

 

Δεν λέω αυτό. Εννοώ ότι πιθανά μπορούν να απλοποιηθούν τα arguments που δίνει ο χρήστης. Δηλαδή το script να ζητάει απλά ένα URI. To URI ας είναι ότι θέλει: Πχ

/path/to/foo/whatever 
http://domain.com/path/to/foo/whatever
ftp://domain.com/path/to/foo/whatever

Το script μετά θα ελέγχει τι τύπος ειναι το path, θα κάνει και τους υπόλοιπους ελέγχους και θα πράττει ανάλογα. Πιο λίγα arguments, πιο ευχάριστο user experience  :P

 

Τώρα ελέγχει για την ύπαρξη του sudo. To θέμα είναι ότι το su -c θέλει μετά την εντολή που ακολουθεί σε quotes. Προκύπτει δηλαδή κάτι τέτοιο (nested quotes):

xterm -hold -e su -c 'backup.sh -d '/home/faramir' -a tar -c gzip  -u 'asdfasdf' -i cli -q'

Μπορούμε να βάλουμε κάπου άλλο τύπο quote (πχ " ... ") ή υπάρχει πρόβλημα;

 

Για το terminal ίσως να μπορούμε να παίρνουμε το output του

echo $TERM

αλλά δεν ξέρω πόσο universal είναι

Δημοσ.

ναι στα arguments μπορεις να βαλεις και " " τα δεχεται κανονικα.

 

οντως δεν δειχνει σωστα η $TERM, μου βγαζει rxvt, ενω το εκτελεσιμο του terminal ειναι urxvt

 

μπορει να το κοιταξω το URI απο εβδομαδα, αλλα θα ειναι massive code change αν υλοποιηθει και ειμαι της αποψης οτι δουλευει δεν το πειραζουμε :P

 

να φανταστεις την install_bootloader πχ δεν την εχω ξαναγγιξει απο την 3.3 και μετα.

Δημοσ.

Σε μένα λέει rxvt-unicode-256color και σε ένα lubuntu στο vbox λέει xterm αν και υπάρχει το lxterminal που ανοίγει από default.

Δημοσ.
μπορει να το κοιταξω το URI απο εβδομαδα, αλλα θα ειναι massive code change αν υλοποιηθει και ειμαι της αποψης οτι δουλευει δεν το πειραζουμε

Οκ. Λογικά οι αλλαγές δεν θα είναι τόσο τραγικά μεγάλες.

 

Παίρνεις το path. Ελέγχεις αν έχει το http στην αρχή. Αν όχι είναι αρχείο και κάνεις ότι έκανες και τώρα για το -file. Αν το έχει τσεκάρεις κάνεις ότι έκανες μέχρι τώρα για το -url.

 

Κάτι άλλο.

 

i) Τα root, home, boot, swap να τα βάλουμε να τα δίνουν μόνοι τους γράφοντας το κείμενο;

ii) Να διαλέγουν μέσα από dialog ένα αρχείο (πχ το /dev/sda2)

iii) Mέσω combobox να εμφανίζουμε τα /dev/sd* και /dev/hd*;

Δημοσ.

Καλο ειναι να εμφανιζει λιστα με τα διαθεσιμα partitions και να επιλεγει ο χρηστης, οποτε combobox.

 

Στο script χρησιμοποιουμε

 

για τα απλα:

 

for f in /dev/[hs]d[a-z][0-9]; do echo -e "$f $(lsblk -d -n -o size $f)"; done
για lvm:

 

for f in $(find /dev/mapper/ | grep '-'); do echo -e "$f $(lsblk -d -n -o size $f)"; done
για raid:

 

for f in $(find /dev -regex "/dev/md[0-9].*"); do echo -e "$f $(lsblk -d -n -o size $f)"; done
Δημοσ.

Χμ... νομίζω ότι έτσι όπως το έχεις, στους απλούς δίσκους δε θα βρίσκει τα partitions όταν πας sda10 και πάνω. Επίσης νομίζω ότι τα globs δεν υποστηρίζουν το  "+" οπότε καλύτερα να το κάνεις και αυτό με regex. Ναι οριακή περίπτωση αλλά οκ.

for f in $(find /dev -regex "^/dev/[hs]d[a-z][0-9]+$"); do echo -e "$f $(lsblk -d -n -o size $f)"; done

Πιθανότατα το ίδιο γίνεται και στο RAID.

 

Ερωτήσεις

 

0. Βγάζουν και οι 3 εντολές output της ίδιας μορφής;

 

1. Ποια είναι η μορφή των LVM? /dev/mapper/ τι? Κάποιος που έχει μπορεί να ποστάρει το output της εντολής του τρίτωνα;

 

2. Η lsblk δείχνει το output όλων των δίσκων ανεξαρτήτως του τύπου; Bγάζει δηλαδή και RAID και LVM? Μήπως είναι πιο εύκολο να κάνουμε parse το output της, αντί να ψάχνουμε για καθε τύπο ξεχωριστά; Αν κάποιος έχει lvm/raid ας ποστάρει μία να δω τι βγάζει.

 

Επίσης, κάποιος που έχει RAID, ας ποστάρει μία το output αυτού:

import os
import re

pattern = re.compile(r"^[sh]d[a-z]\d+$|^md\d+\.\w+$")

disks = [disk for disk in os.listdir("/dev/") if pattern.search(disk)]

print disks

https://www.debuggex.com/r/1tZw_dETm5rtF_XE

Δημοσ.

Χμ... νομίζω ότι έτσι όπως το έχεις, στους απλούς δίσκους δε θα βρίσκει τα partitions όταν πας sda10 και πάνω. Επίσης νομίζω ότι τα globs δεν υποστηρίζουν το "+" οπότε καλύτερα να το κάνεις και αυτό με regex. Ναι οριακή περίπτωση αλλά οκ.

for f in $(find /dev -regex "^/dev/[hs]d[a-z][0-9]+$"); do echo -e "$f $(lsblk -d -n -o size $f)"; done

 

Ναι, το ξερω αλλα λεω θα υπαρχει ανθρωπος με πανω απο 10 partitions σε ενα δισκο? :P

Θα το βαλω παντως οπως το εκανες, με regex.

 

Πιθανότατα το ίδιο γίνεται και στο RAID.

Με regex ειναι το raid, δειχνει κανονικα και 3ψηφια νουμερα.

 

0. Βγάζουν και οι 3 εντολές output της ίδιας μορφής;

Ναι: partition-μεγεθος

 

1. Ποια είναι η μορφή των LVM? /dev/mapper/ τι? Κάποιος που έχει μπορεί να ποστάρει το output της εντολής του τρίτωνα;

Eιναι της μορφης /dev/mapper/VolumeGroup-LogicalVolume.

H - παντα υπαρχει, την βαζει το ιδιο το lvm οταν τα δημιουργεις

 

2. Η lsblk δείχνει το output όλων των δίσκων ανεξαρτήτως του τύπου; Bγάζει δηλαδή και RAID και LVM? Μήπως είναι πιο εύκολο να κάνουμε parse το output της, αντί να ψάχνουμε για καθε τύπο ξεχωριστά; Αν κάποιος έχει lvm/raid ας ποστάρει μία να δω τι βγάζει.

Ναι κανονικα/raid/lvm. Ειναι συνοδευτικη βασικα και δειχνει απλα το μεγεθος των partitions. Μπορεις και να μην την βαλεις.

 

Οι εντολες για lvm και raid βγαζουν:

 

2013_10_27_154840_1280x1024_scrot.jpg

 

Και πως τα δειχνει το script:

 

2013_10_27_155933_1280x1024_scrot.png 2013_10_27_155956_1280x1024_scrot.png

 

To output αυτου που εβαλες:

 

2013_10_27_160542_1280x1024_scrot.jpg

Δημοσ.

Ευχαριστώ.

 

Τώρα που το ξανακοιτάω, το regex στα RAID πρακτικά κάνει match σε πάρα πολλά που μάλλον δεν θα έπρεπε. Ουσιαστικά κάνει match σε "/dev/md", μετά ένα αριθμό υποχρεωτικά και μετά οποιοδήποτε πλήθος, οποιουδήποτε χαρακτήρα. Κοίτα εδώ.

 

To "σωστό" regex είναι το ακόλουθο

^/dev/md[0-9]+$
https://www.debuggex.com/r/ZdefB9lxGyUwkEyo

 

Για τα υπόλοιπα θα τα δω.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...