• Wie Ur-Chips und genähter Speicher die Menschen zum Mond brachten 19. Juli 2019
    Die Mondlandung wurde auch durch Pionierarbeit bei Computern möglich gemacht – die bis heute nachwirkt. So wurden erstmals Vorgänger heutiger Chips eingesetzt und die Regeln guten Software-Designs geprägt. Der genähte Speicher setzte sich hingegen nicht durch.

ubuntu dateien kopieren ohne datumsänderung

Um mit UBUNTU Dateien kopieren ohne Datumsänderung bleibt einem nichts anderes übrig als einen grafischen Dateiexplorer zu nehmen.
Krusader

Dieses KDE Programm ist recht vielseitig und bedarf einer gewissen Gewöhnung. Aber tut was es soll.

Eine zweite alternative auf der Command Shell ist
rsync

  1. Paket installieren
    sudo apt-get install rsync
  2.  Backup Script
    #!/bin/bash
    # Simple backup with rsync
    # local-mode, tossh-mode, fromssh-mode
    
    SOURCES=(/root /etc /home /boot )
    TARGET="/media/backup"
    
    # edit or comment with "#"
    #LISTPACKAGES=listdebianpackages        # local-mode and tossh-mode
    MONTHROTATE=monthrotate                 # use DD instead of YYMMDD
    
    RSYNCCONF=(--delete)
    #MOUNTPOINT="/media/daten"               # check local mountpoint
    #MAILREC="user@domain"
    
    #SSHUSER="sshuser"
    #FROMSSH="fromssh-server"
    #TOSSH="tossh-server"
    SSHPORT=22
    
    ### do not edit ###
    
    MOUNT="/bin/mount"; FGREP="/bin/fgrep"; SSH="/usr/bin/ssh"
    LN="/bin/ln"; ECHO="/bin/echo"; DATE="/bin/date"; RM="/bin/rm"
    DPKG="/usr/bin/dpkg"; AWK="/usr/bin/awk"; MAIL="/usr/bin/mail"
    CUT="/usr/bin/cut"; TR="/usr/bin/tr"; RSYNC="/usr/bin/rsync"
    LAST="last"; INC="--link-dest=$TARGET/$LAST"
    
    LOG=$0.log
    $DATE > $LOG
    
    if [ "${TARGET:${#TARGET}-1:1}" != "/" ]; then
      TARGET=$TARGET/
    fi
    
    if [ "$LISTPACKAGES" ] && [ -z "$FROMSSH" ]; then
      $ECHO "$DPKG --get-selections | $AWK '!/deinstall|purge|hold/'|$CUT -f1 | $TR '\n' ' '" >> $LOG
      $DPKG --get-selections | $AWK '!/deinstall|purge|hold/'|$CUT -f1 |$TR '\n' ' '  >> $LOG  2>&1 
    fi
    
    if [ "$MOUNTPOINT" ]; then
      MOUNTED=$($MOUNT | $FGREP "$MOUNTPOINT");
    fi
    
    if [ -z "$MOUNTPOINT" ] || [ "$MOUNTED" ]; then
      if [ -z "$MONTHROTATE" ]; then
        TODAY=$($DATE +%y%m%d)
      else
        TODAY=$($DATE +%d)
      fi
    
      if [ "$SSHUSER" ] && [ "$SSHPORT" ]; then
        S="$SSH -p $SSHPORT -l $SSHUSER";
      fi
    
      for SOURCE in "${SOURCES[@]}"
        do
          if [ "$S" ] && [ "$FROMSSH" ] && [ -z "$TOSSH" ]; then
            $ECHO "$RSYNC -e \"$S\" -avR \"$FROMSSH:$SOURCE\" ${RSYNCCONF[@]} $TARGET$TODAY $INC"  >> $LOG 
            $RSYNC -e "$S" -avR "$FROMSSH:\"$SOURCE\"" "${RSYNCCONF[@]}" "$TARGET"$TODAY $INC >> $LOG 2>&1 
            if [ $? -ne 0 ]; then
              ERROR=1
            fi 
          fi 
          if [ "$S" ]  && [ "$TOSSH" ] && [ -z "$FROMSSH" ]; then
            $ECHO "$RSYNC -e \"$S\" -avR \"$SOURCE\" ${RSYNCCONF[@]} \"$TOSSH:$TARGET$TODAY\" $INC " >> $LOG
            $RSYNC -e "$S" -avR "$SOURCE" "${RSYNCCONF[@]}" "$TOSSH:\"$TARGET\"$TODAY" $INC >> $LOG 2>&1 
            if [ $? -ne 0 ]; then
              ERROR=1
            fi 
          fi
          if [ -z "$S" ]; then
            $ECHO "$RSYNC -avR \"$SOURCE\" ${RSYNCCONF[@]} $TARGET$TODAY $INC"  >> $LOG 
            $RSYNC -avR "$SOURCE" "${RSYNCCONF[@]}" "$TARGET"$TODAY $INC  >> $LOG 2>&1 
            if [ $? -ne 0 ]; then
              ERROR=1
            fi 
          fi
      done
    
      if [ "$S" ] && [ "$TOSSH" ] && [ -z "$FROMSSH" ]; then
        $ECHO "$SSH -p $SSHPORT -l $SSHUSER $TOSSH $LN -nsf $TARGET$TODAY $TARGET$LAST" >> $LOG  
        $SSH -p $SSHPORT -l $SSHUSER $TOSSH "$LN -nsf \"$TARGET\"$TODAY \"$TARGET\"$LAST" >> $LOG 2>&1
        if [ $? -ne 0 ]; then
          ERROR=1
        fi 
      fi 
      if ( [ "$S" ] && [ "$FROMSSH" ] && [ -z "$TOSSH" ] ) || ( [ -z "$S" ] );  then
        $ECHO "$LN -nsf $TARGET$TODAY $TARGET$LAST" >> $LOG
        $LN -nsf "$TARGET"$TODAY "$TARGET"$LAST  >> $LOG 2>&1 
        if [ $? -ne 0 ]; then
          ERROR=1
        fi 
      fi
    else
      $ECHO "$MOUNTPOINT not mounted" >> $LOG
      ERROR=1
    fi
    $DATE >> $LOG
    if [ -n "$MAILREC" ]; then
      if [ $ERROR ];then
        $MAIL -s "Error Backup $LOG" $MAILREC < $LOG
      else
        $MAIL -s "Backup $LOG" $MAILREC < $LOG
      fi
    fi

Die Datei wird z.B. unter dem Namen /root/backup.sh gesichert. Da die Logdatei unter dem Namen mit selben Anhang und dem Anhang .log (z.B. /root/backup.sh.log) gesichert wird, empfiehlt es sich, eine sprechende Bezeichnung als Programmnamen zu vergeben.