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

συμπίεση πολλών φακέλων αυτόματα


Γιαούρτι

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

έχω έναν φάκελο ο οποίος περιέχει αρκετούς υποφακέλους με αρχεία. ίσως είναι και 100+ (οι φάκελοι, όχι τα αρχεία)

θέλω όλους αυτούς τους φακέλους να τους συμπιέσω, κάθε φάκελος και ξεχωριστό αρχείο.

θα μπορούσα να τους κάνω έναν έναν χειροκίνητα αλλά είναι μεγάλος ο όγκος και κάθε αρχείο μπορεί να πάρει 5+λεπτά να συμπιεστεί. άρα πρέπει να είμαι όλη μέρα πάνω από τον υπολογιστή

ψάχνω αν υπάρχει τρόπος, με κάποια εντολή να γίνει όλη αυτή η διαδικασία αυτόματα. Να αφήσω τον υπολογιστή και μετά από κάποιες ώρες να έχω τα αρχεία έτοιμα συμπιεσμένα.

το format που θέλω είναι tar. (με συμπίεση lzma κατά προτίμηση)

όλα αυτά σε lubuntu.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Με μια εντολη δεν γινεται. Θα κανεις ενα sh σκριπτ με οσα λεει εδω και θα το τρεξεις στο φακελο που εχει μεσα τους φακελους που θες να συμπιεσεις
https://serverfault.com/questions/97763/linux-gzip-multiple-subdirectories-into-separate-archives

Επεξ/σία από jim_p
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Κάτι τέτοιο ψάχνεις δηλαδή;

 

find . -maxdepth 1 -type d -exec tar cjf {}.tar.bz2 {} \;

αφού έχεις κάνει cd μέσα στο parent directory

Επεξ/σία από NullScan
  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στις 1/4/2019 στις 10:09 ΠΜ, NullScan είπε

Κάτι τέτοιο ψάχνεις δηλαδή;


find . -maxdepth 1 -type d -exec tar cjf {}.tar.bz2 {} \;

αφού έχεις κάνει cd μέσα στο parent directory

ωραίος, αυτό ήθελα.

λειτουργεί λίγο περίεργα, δημιουργεί ένα μεγάλο αρχείο και μετά δημιουργούνται τα ξεχωριστά. τα συμπιέζει όλα μαζί και μετά τα χωρίζει; δε κατάλαβα τι κάνει αλλά δουλεύει.

αν ήθελα συμπίεση lzma?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Σε παρόμοια κατάσταση έφτιαξα το παρακάτω script που πέρα απο συμπίεση κάνει και encryption:

#!/bin/bash
for dir in $( ls )
do
  if [ -d $dir ]; then
    echo "Compresing "$dir
    tar cJf $dir.tar.xz $dir
    echo "Encrypting "$dir
    echo "insert_password_here" | gpg --batch -q --passphrase-fd 0 --cipher-algo AES256 -c $dir.tar.xz
    echo "Removing "$dir
    rm $dir.tar.xz
  fi
done

 

Επεξ/σία από e-tic
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
22 ώρες πριν, Γιαούρτι είπε

ωραίος, αυτό ήθελα.

λειτουργεί λίγο περίεργα, δημιουργεί ένα μεγάλο αρχείο και μετά δημιουργούνται τα ξεχωριστά. τα συμπιέζει όλα μαζί και μετά τα χωρίζει; δε κατάλαβα τι κάνει αλλά δουλεύει.

αν ήθελα συμπίεση lzma?

Αν θέλεις lzma τότε προσθέτεις το switch --lzma στο tar.

Όχι δεν κάνει ένα μεγάλο, παίρνει κάθε φάκελο ξεχωριστά στο directory από το οποίο τρέχες την εντολή και τον συμπιέζει με όλα του τα περιεχόμενα. Αν κατάλαβα καλά αυτό ήθελες.

 

EDIT: ξέχασα να προσθεσω το exclude του local directory, γι αυτό σου συμπιέζει και όλο το current directory μαζί με τα subfolders. Το σωστό syntax είναι έτσι

find . -maxdepth 1 -not -path '.' -type d -exec tar cjf {}.tar.bz2 {} \;
Επεξ/σία από NullScan
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 8 μήνες μετά...
Στις 8/4/2019 στις 11:43 ΠΜ, NullScan είπε

Αν θέλεις lzma τότε προσθέτεις το switch --lzma στο tar.

Όχι δεν κάνει ένα μεγάλο, παίρνει κάθε φάκελο ξεχωριστά στο directory από το οποίο τρέχες την εντολή και τον συμπιέζει με όλα του τα περιεχόμενα. Αν κατάλαβα καλά αυτό ήθελες.

EDIT: ξέχασα να προσθεσω το exclude του local directory, γι αυτό σου συμπιέζει και όλο το current directory μαζί με τα subfolders. Το σωστό syntax είναι έτσι


find . -maxdepth 1 -not -path '.' -type d -exec tar cjf {}.tar.bz2 {} \;

επειδή με ενδιαφέρει κι εμένα το θέμα και είμαι άσχετος από linux, πως ακριβώς θα ήταν η εντολή σε αυτή την περίπτωση; με συμπίεση Lzma εννοώ.

Νομίζω αυτή είναι η καλύτερη συμπίεση σωστά;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 εβδομάδες αργότερα...
  • 2 χρόνια αργότερα...

θέλω να κάνω ακριβώς το ανάποδο.

Μέχρι τώρα χρησιμοποιώ το peazip.

Το πρόβλημα είναι ότι έχω αρκετά αρχεία *.tar.bz2, κάνω ομαδικό extract με το peazip και μου τα αποσυμπιέζει σε tar και άντε πάλι να τα αποσυμπιέσω.

Πως μπορώ με τη μια να κάνω αυτή την κίνηση; Δε με νοιάζει αν είναι από γραμμή εντολών. Βασικά το προτιμώ. Είναι πολλά τα αρχεία και δε γίνεται χειροκίνητα

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

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