Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Daten automatisch auf mehrere Medien verteilen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Software
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
killer



Anmeldungsdatum: 02.05.2005
Beiträge: 3

BeitragVerfasst am: 09. Okt 2005 2:38   Titel: Daten automatisch auf mehrere Medien verteilen

Ich suche ein Programm um mehr als 20GB Daten automatisch und nicht komprimiert auf mehrere Medien zu brennen
 
Benutzer-Profile anzeigen Private Nachricht senden

Lateralus
prolinux-forum-admin


Anmeldungsdatum: 05.05.2004
Beiträge: 1238

BeitragVerfasst am: 09. Okt 2005 9:47   Titel:

Also das geht auf jeden Fall mit einen Shellskript. Ich melde mich später nochmal wieder.

Kann man davon ausgehen, dass die Dateien in mehreren Unterverzeichnissen vergraben sind?
 
Benutzer-Profile anzeigen Private Nachricht senden

killer



Anmeldungsdatum: 02.05.2005
Beiträge: 3

BeitragVerfasst am: 09. Okt 2005 11:34   Titel:

Ja, und die Verzeichnisse dürfen nicht geteilt werden
 
Benutzer-Profile anzeigen Private Nachricht senden

Lateralus
prolinux-forum-admin


Anmeldungsdatum: 05.05.2004
Beiträge: 1238

BeitragVerfasst am: 10. Okt 2005 16:45   Titel:

Hi

Also... ich hab das noch nicht hingekriegt, aber wenn jemand will, kann er ja mal einen Blick reinwerfen. Das ist alles noch sehr hässlich und funktioniert nicht und bla, aber es drückt vielleicht einen Grundgedanken aus - vielleicht suchst du aber einfach weiter nach was Existentem...

Code:
#!/bin/bash

function save_dir(){
   dir=$1
   file_list_prefix=$2
   todo_list_prefix=$3
   MED_SIZE=$4
   index=$5

   list_size=0
   
   index=$[$index+1]
   matching_element_ignored=0
   
   file_list="$file_list_prefix"."$index"
   todo_list="$todo_list_prefix"."$index"
   next_todo_list="$todo_list".next
   
   ls -A $dir >> $todo_list
   
   matching_element_ignored=create_list $file_list $todo_list $next_todo_list $MED_SIZE

   while [ "$matching_element_ignored" -eq 1 ]; do
      $matching_element_ignored=0
      
      mv "$next_todo_list" "$todo_list"

      # Auf der todo-Liste befinden sich noch Elemente,
      # welche klein genug sind, um gesichert zu werden
      
      index=$[$index+1]
      file_list="$file_list_prefix"."$index"

      matching_element_ignored=create_list $file_list $todo_list $next_todo_list $MED_SIZE
   done
   
   # Alles was jetzt noch in todo_list steht, sind Verzeichnisse,
   # welche zu gross sind, um sie sofort zu sichern
   # Diese werden jetzt auch noch gesichert:
   
   rm $next_todo_list
   rm $todo_list
   
   for subdir in $(cat $todo_list); do
      save_dir $subdir, $file_list_prefix $todo_list_prefix $MED_SIZE $index
   done
   
}

function create_list(){
   file_list=$1
   todo_list=$2
   next_todo_list=$3
   MED_SIZE=$4

   # Fuer jede Datei und jedes Verzeichnis
   for element in $(cat $todo_list); do
      if_file=0
      cd $element || is_file=1
      
      if [ "$is_file" -eq 0 ]; then
         cd $dir
      fi
   
      # Bestimme die Groesse des Elements
      element_size = $(du -s $element | awk ' { print $1 } ')
      
      if [ $[$list_size + $element_size] -gt $MED_SIZE ]; then
         # Fuege es zur todo-Liste hinzu, wenn es
         # fuer die aktuelle Liste zu gross ist
         # Aber nur dann, wenn es keine Datei ist,
         # welche groesser als MED_SIZE ist

         
         if [ $is_file -eq 0 -o $element_size -le $MED_SIZE ]; then
            echo "$dir"/"$element" >> $next_todo_list
         else
            echo "file $element is too large to be saved!"
         fi
         
         # und notiere, wenn es insgesamt klein genug ist,
         # um gesichert zu werden.
         matching_element_ignored=1
         
      else
         # Ansonsten fuege es zur aktuellen Liste hinzu
         $list_size = $[$list_size + $element_size]
         echo "$dir"/"$element" >> $file_list
      fi
   done
   
   return $matching_element_ignored
}



# Elemente werden mit Newline getrennt
IFS="
"

# Gibt die Groesse der Sicherunsmedien in Byte an
MED_SIZE=700*1024*1024   # 700 MB

# Temporaeres Verzeichnis
TMP_DIR=/tmp

# Zu sicherndes Verzeichnis
SAVE_DIR=/usr/ports/distfiles

# Optionen fuer mkisofs
MKISOFS_OPT="-r"

# Optionen fuer cdrecord
CDRECORD_OPT="-dev=/dev/cdrw speed=8 -eject"



date=$(date +%s)

file_list_prefix="$TMP_DIR"/backup."$date".list
todo_list_prefix="$TMP_DIR"/backup."$date".todo

save_dir $SAVE_DIR $file_list_prefix $todo_list_prefix $MED_SIZE 0

exit 0

# Erzeuge die Medien
for file in $(ls "$file_list_prefix"*); do
   echo "I'm going to write all files in $file now."
   echo ""
   echo Please insert a medium and press any key
   read
   cat file | xargs mkisofs $MKISOFS_OPT | cdrecord $CDRECORD_OPT
done

exit 0
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Software Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy