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

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

  • 2 εβδομάδες αργότερα...
  • Απαντ. 889
  • Δημ.
  • Τελ. απάντηση

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

Δημοσ.

Usage: backup.sh -i cli|dialog -d path [-f name] [-c gzip|bzip2|xz|none] [-E openssl|gpg -P passphrase] [-u "option1 option2..."] [-h|-hn] [-NqvgHrsoD]

 

Θελω να πω οτι:

 

τα main arguments ειναι το -i που δεχεται cli ή dialog και το -d που δεχεται path

optional ειναι:

το -f που δεχεται name

το -c με gzip ή bzip2 ή xz ή none

το -E με openssl ή gpg και πρεπει να συνοδευεται απο το -P με passphrase

το -u που παιρνει διαφορα options κλεισμενα με quotes (πχ "--acls --xattrs")

το -h ή το -hn (το -n πρεπει να συνοδευεται με -h)

και τα -NqvgHrsoD ανεξαρτητα.

 

Σωστη ειναι η συνταξη ή σαν τα μουτρα μου? :P

Δημοσ.

Να σου απαντήσω εγώ; Νομίζω έχεις ήδη /etc/star.conf έτσι; Δε χρειάζεται να απαιτείς args παρα μόνο να έχεις default ρυθμίσεις στο αρχείο .conf όταν εγκαθίσταται η εφαρμογή κ να λές πάτε κ πειράξτε εκει ότι θέλετε. Αυτο που μπορείς να κάνεις είναι να ανιχνεύεις αν ο χρήστης είναι σε Xorg και να ξεκινάς το εκάστοτε interface μόνος σου, αν έχεις όρεξη. Έπομένως κάποιος θα δίνει backup.sh και θα γίνονται όλα αυτόματα :devil: .

Μη με βρίσεις, είπα αν έχεις όρεξη

Δημοσ.

ναι υπαρχει /etc/backup.conf αλλα δεν ειναι το θεμα μου εκει, ειναι καθαρα αισθητικο για την help page.

δεν χρειαζεται X το script (εκτος αν καποιος τελειωσει τον wrapper :P)
 
λεω αντι Usage: backup.sh [options] να εβαζα κατι πιο αναλυτικο.

καθαρα για αναγνωση δηλαδη.

 

ουτως η αλλως τα arguments και το /etc/backup.conf δεν ειναι απαραιτητα, υπαρχουν interfaces.

 

 

Έπομένως κάποιος θα δίνει backup.sh και θα γίνονται όλα αυτόματα

 

γινεται ηδη, με την χρηση του conf :P

Δημοσ.

 

εκτος αν καποιος τελειωσει τον wrapper

Να τελειώσει τι; :P

 

Επίσης, δεν σε προλαβαίνω ρε φίλε. Με τέτοιο οργασμό development πως να σε ακολουθήσω;

Δημοσ.

Με τέτοιο οργασμό development

 

τι ειπε το ατομο :-D

 

σιγα, τα arguments σταθερα ειναι. τωρα αν προστιθεται κατι που και που ε... :P

 

τελευταια κωδικα καθαριζω συνηθως

 

οκ, δικιο εχεις παντως. :-)

  • 2 εβδομάδες αργότερα...
Δημοσ.
$ ls --help

[...]
   --group-directories-first
                             group directories before files;

Υπάρχει τρόπος να βάζει τα symbolic links μαζί με τα directories στην αρχή του output; Χρησιμοποιώ zsh αν πάιζει κάποιο ρόλο, αν και νομίζω ότι η ls ορίζεται στο GNU coreutils

 

edit

Βασικά αν δώσω --dereference το κάνει group με τα άλλα directories, αλλά δεν το δείχνει ποια σαν symbolic link. Any ideas?

Δημοσ.
$ ls --help

[...]
   --group-directories-first
                             group directories before files;

Υπάρχει τρόπος να βάζει τα symbolic links μαζί με τα directories στην αρχή του output; Χρησιμοποιώ zsh αν πάιζει κάποιο ρόλο, αν και νομίζω ότι η ls ορίζεται στο GNU coreutils

 

edit

Βασικά αν δώσω --dereference το κάνει group με τα άλλα directories, αλλά δεν το δείχνει ποια σαν symbolic link. Any ideas?

 

http://unix.stackexchange.com/questions/111637/ls-l-group-directories-first-act-on-symlinks-as-well

Δημοσ.

mll() {
  (($#)) || set -- *(N-/) *(N^-/)
  (($#)) && ls -ldU -- $@
}
Καλή μαγκιά.

 

Επιβεβαιώνεται για άλλη μία φορά πως στο ZSH, στο Vim, και στην Perl μπορείς να κάνεις τα πάντα. Απλά, όπως και στο παραπάνω, μερικές φορές από θέμα readibility η εντολή μοιάζει με κρυπτογραφημένα δεδομένα :)

  • 1 μήνα μετά...
Δημοσ.

Εχουμε:

test/
└── mpe
    ├── dir
    ├── file
    ├── .hidden-dir
    │   └── eee
    └── .hidden-file

Θελω με την tar να παρω μονο τα κρυφα αρχεια και φακελους με τα περιεχομενα αυτων:

tar cvf /dev/null --exclude=test/mpe/[^.]* test
test/
test/mpe/
test/mpe/.hidden-file
test/mpe/.hidden-dir/
test/mpe/.hidden-dir/eee

Ωραια. 
 
Αν ομως δωσω:

tar cvf /dev/null --exclude=test/*/[^.]* test
test/
test/mpe/
test/mpe/.hidden-file
test/mpe/.hidden-dir/

Γιατι αν αντι για mpe βαλω * δεν παιρνει τα περιεχομενα του .hidden-dir? :blink: 

H rsync δουλευει σωστα και στις δυο περιπτωσεις:

rsync -av test /tmp --exclude=test/mpe/[^.]* --dry-run
sending incremental file list
test/
test/mpe/
test/mpe/.hidden-file
test/mpe/.hidden-dir/
test/mpe/.hidden-dir/eee

rsync -av test /tmp --exclude=test/*/[^.]* --dry-run
sending incremental file list
test/
test/mpe/
test/mpe/.hidden-file
test/mpe/.hidden-dir/
test/mpe/.hidden-dir/eee

EDIT

αν με στον .hidden-dir βαλω ενα κρυφο αρχειο .ee, αυτο το παιρνει αλλα εξακολουθει να μην παιρνει το κανονικο eee.

Δημοσ.

Εχουμε:

test/
└── mpe
    ├── dir
    ├── file
    ├── .hidden-dir
    │   └── eee
    └── .hidden-file
Θελω με την tar να παρω μονο τα κρυφα αρχεια και φακελους με τα περιεχομενα αυτων:

tar cvf /dev/null --exclude=test/mpe/[^.]* test
test/
test/mpe/
test/mpe/.hidden-file
test/mpe/.hidden-dir/
test/mpe/.hidden-dir/eee
Ωραια.

 

Εδώ του λες να παραλείψει όλα τα αρχεία μέσα στον κατάλογο mpe που δεν ξεκινούν από τελεία. Το eee δεν είναι μέσα στον mpe αλλά μέσα στον .hidden-dir οπότε δεν γίνεται match και έτσι περιλαμβάνεται κανονικά στο tar.

 

Αν ομως δωσω:

tar cvf /dev/null --exclude=test/*/[^.]* test
test/
test/mpe/
test/mpe/.hidden-file
test/mpe/.hidden-dir/
Γιατι αν αντι για mpe βαλω * δεν παιρνει τα περιεχομενα του .hidden-dir? :blink:

 

Εδώ του λες να παραλείψει τα αρχεία που δεν ξεκινούν από τελεία και που βρίσκονται σε _όλους_ τους καταλόγους οπότε το eee γίνεται match και παραλείπεται.

 

H rsync δουλευει σωστα και στις δυο περιπτωσεις:

Η rsync παίζει σωστά γιατί υλοποιεί και το * και το ** οπότε το pattern που δίνεις κόβει μόνο ένα βάθος καταλόγων και όχι όλα τα βάθη. Δοκίμασε να τρέξεις την rsync με ** και θα δεις ότι θα συμπεριφερθεί με τον ίδιο τρόπο με την tar.
  • Like 1
Δημοσ.

Εδώ του λες να παραλείψει τα αρχεία που δεν ξεκινούν από τελεία και που βρίσκονται σε _όλους_ τους καταλόγους οπότε το eee γίνεται match και παραλείπεται.

 

wtf, νομιζα οτι το /*/ περιοριζεται στο συγκεκριμενο μερος του path που το βαζω...

 

οποτε να φανταστω ειναι normal συμπεριφορα.

 

Ευχαριστω!

 

Και αν εχω πολλους φακελους στον test, δεν γινεται με pattern την tar?

 

Δηλαδη θελω να του πω:

 

Σε ολους τους φακελους κατω απο τον test κρατα μονο τα κρυφα αρχεια και dirs με τα περιεχομενα τους.

 

Ξερω οτι γινεται με την find αλλα ελεγα μηπως παιξει κανα pattern.

Δημοσ.

wtf, νομιζα οτι το /*/ περιοριζεται στο συγκεκριμενο μερος του path που το βαζω...

 

Και αν εχω πολλους φακελους στον test, δεν γινεται με pattern την tar?

 

Ξερω οτι γινεται με την find αλλα ελεγα μηπως παιξει κανα pattern.

Αν σε ενδιαφέρει να κόψεις μόνο την πρώτη βαθμίδα βάθους (και αν μιλάμε για gnu tar), μπορείς να πεις στο tar ότι θέλεις το * να συμπεριφέρεται ως * και όχι ως ** χρησιμοποιώντας την παρακάτω παράμετρο:

 

% tar cvf /dev/null --no-wildcards-match-slash --exclude='test/*/[^.]*' test
test/
test/mpe/
test/mpe/.hidden-dir/
test/mpe/.hidden-dir/eee
test/mpe/.hidden-file
Και πάλι όμως δεν είναι και τόσο foolproof. Αν αλλάξει κάτι από τον συνδυασμό tree και exclude pattern έστω και λίγο, expect dragons.

 

Επίσης στα exclude σου πάντα να βάζεις ' ' (μονά) ώστε να είσαι σίγουρος ότι η tar βλέπει το pattern που γράφεις και όταν έχεις καταλόγους το dir1/dir2 είναι διαφορετικό από το dir1/dir2/ (όπως και στην rsync αυτό) οπότε πρόσεχε για τελικά /

  • Like 1
Δημοσ.

Εμένα πάντως μου αρέσει να διαβάζω documentation, στα περισσότερα προγράμματα αν όχι όλα, τα official docs αρκούν και περισσεύουν!

 

Thank God docs

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα

  • Δημιουργία νέου...