diff options
Diffstat (limited to 'linhes/linhes-system')
| -rwxr-xr-x | linhes/linhes-system/PKGBUILD | 19 | ||||
| -rw-r--r-- | linhes/linhes-system/lh_mtc.cron (renamed from linhes/linhes-system/myth_mtc.cron) | 41 | ||||
| -rwxr-xr-x | linhes/linhes-system/lh_mtc.py (renamed from linhes/linhes-system/myth_mtc.py) | 16 | ||||
| -rwxr-xr-x | linhes/linhes-system/lh_system_backup | 29 | ||||
| -rwxr-xr-x | linhes/linhes-system/lh_system_backup_job | 330 | ||||
| -rwxr-xr-x | linhes/linhes-system/lh_system_start.sh | 7 | 
6 files changed, 400 insertions, 42 deletions
| diff --git a/linhes/linhes-system/PKGBUILD b/linhes/linhes-system/PKGBUILD index ab75da9..62bee0b 100755 --- a/linhes/linhes-system/PKGBUILD +++ b/linhes/linhes-system/PKGBUILD @@ -1,6 +1,6 @@  pkgname=linhes-system  pkgver=9.0.0 -pkgrel=46 +pkgrel=47  arch=('x86_64')  #install=$pkgname.install  pkgdesc="Everything that makes LinHES a system" @@ -11,14 +11,15 @@ depends=('cronie' 'dbus-python' 'dvb-firmware' 'expect' 'flatpak' 'firefox' 'gla           'intel-media-driver' 'libva-intel-driver' 'libva-vdpau-driver')  binfiles="add_storage.py balance_storage_groups.py empty_storage_groups.py remove_storage.py            checkXFSfrag.sh enableIRWake.sh idle.py lh_system_start.sh lh_notify-send -          lh_home_check.sh lh_myth_status.py jobqueue_helper.py gen_lib_xml.py -          diskspace.sh find_orphans.py optimize_mythdb.py myth_mtc.py +          lh_home_check.sh lh_myth_status.py lh_system_backup lh_system_backup_job +          jobqueue_helper.py gen_lib_xml.py +          diskspace.sh find_orphans.py optimize_mythdb.py lh_mtc.py            misc_recent_recordings.pl misc_status_config.py misc_status_info.sh            misc_upcoming_recordings.pl misc_which_recorder.pl            create_media_dirs.sh be_check.py            myth2mkv myth2mp3 myth2videos udev_link.sh"  source=($binfiles -    'myth_mtc.cron' 'paccache.cron' 'flatpak_update.cron' 'xfs_defrag.cron' +    'lh_mtc.cron' 'paccache.cron' 'flatpak_update.cron' 'xfs_defrag.cron'      'readme_is_xml' 'add_storage.readme' 'LinHES-release' 'lh_log_care.cron'      '79-cronie.hook' 'fstrim.hook' 'openssh.hook' 'plex_lib.conf' 'rsyslog.hook'      '10-monitor.conf' 'x11vnc.override.conf' 'lh_lighttpd.conf' 'lh_php.ini' @@ -31,16 +32,18 @@ sha256sums=('525bfe29b63d3ec5a17a32fa29745e24070020490c3f5b6dd6b03250348fb324'              'c7a2b2de44645e3a905b39d7411e5b8b27b60bd2944533fd4655c3b175755da1'              'ae34515e144830f424d3bd3f6b1b446892d62beed20bca6f0fb19b0bbb779f27'              '5e6d128f879b0fe7c1a190cccd75d4e5d00afc161f3bc9e92ffa2d87242cc9df' -            '7667518308cbb2ff7fbc52e6e0ba918b11ee04e5e26cee85d98297df4929da41' +            '7d4c5397326565b517799aef4e6301d12b672a5995e4de03cf6817f5de05855d'              '6d4fb0ed1a5ed961b3a3884dce093118e50c2981a9cd5837d20abc5a6d4fd8aa'              '87875d9e5f5ce18208f419698ce69b6bcbcd08955a57a4a13940e715af58b787'              '93d664f4a46fda05d0f754d19df40cbda120e325b80c07092345b14763993833' +            '8d6d09cedc85e49712144699ccb905be6ef663e9ab0bc01abd434370ab12fede' +            'e5ffd470e43b4993b5212b128c2e92aa55d18538b130de671fcf56c0d0a5e9d4'              '91bdec992bb2c933e15625c181f2195c402060b879168ebf35944cb064c904b9'              '5cacfdd02833e5a3130d765573e772e6bd5030336ba86239c5e4db5ffa36fc69'              'ebdb3ee0212e0cc72526bb5e50a032573e1894acb7bf75617243b0b49aa1f8f2'              '4d006f0fe3b13e67de1b961d611e81911905a30d140849dfdb8e5c0dc4da2f7c'              'e371c6a289c68fe200d7da856c20a8c579efa23178f4d62235f7359d7f6e49a1' -            'c9b52a5be54f920ca5fb16423977cb685c9b2db8b39fe9b1c743abf12228a700' +            '048a978774c4f05a5a9482f0aab32e00d2c21217d6faf8c578ed6b26cb5de67d'              'd2d69b2bf6315bd37ff5f5b2f0cde8ab2fb89bae18f8796dc5208ffc1a9d743e'              'a3f8ba840853e4a189dd52520a6958f4030e1cc3391200a6aeef055fb469f0b4'              '1819085bd2c9106482c5f243b95fddf3dae69212330ab76cb493add5c26a45a4' @@ -52,7 +55,7 @@ sha256sums=('525bfe29b63d3ec5a17a32fa29745e24070020490c3f5b6dd6b03250348fb324'              'a961cfdc6f02b12fb445777dd2c144fed96306ca2f430cc8853ae307c759c1ad'              'd8574104b75c6d41284488612ec5583c50a8dab438492fa42c47231add4cfc54'              '6bdbf593d3e1348d1a8f7c4c17cb2e893f7e18ae355daf978173e669cfe3be80' -            '9e97b4d68c9e8988daacadd40f1de9f0b5945d870eba596a2ceb5e0c023fa9c0' +            'b3f02ec3f8cedc98c74b3169049b7b6aa78bd79d558a8bc98d00e064b983965c'              '186203d3c0520bb3d611da99d33a7713e9c1563814285f1f101097234f214b2f'              'd8d36a501928d0cc505957d392291fad317b1e895ff99847d90643cf5f622a89'              'cdfc0c836b8194f631f4a9e022c232ff75a13ff1a161a1a011858578bea5f930' @@ -126,7 +129,7 @@ package() {      #cron files      install -Dm755 $srcdir/paccache.cron $pkgdir/etc/cron.weekly/paccache      install -Dm755 $srcdir/xfs_defrag.cron $pkgdir/etc/cron.weekly/xfs_defrag -    install -Dm755 $srcdir/myth_mtc.cron $pkgdir/etc/cron.hourly/myth_mtc +    install -Dm755 $srcdir/lh_mtc.cron $pkgdir/etc/cron.hourly/lh_mtc      install -Dm755 $srcdir/flatpak_update.cron $pkgdir/etc/cron.daily/flatpak_update      install -Dm755 $srcdir/lh_log_care.cron $pkgdir/etc/cron.daily/lh_log_care diff --git a/linhes/linhes-system/myth_mtc.cron b/linhes/linhes-system/lh_mtc.cron index 6d70058..b556d60 100644 --- a/linhes/linhes-system/myth_mtc.cron +++ b/linhes/linhes-system/lh_mtc.cron @@ -5,22 +5,22 @@ MYTH_RUN_STATUS=1  date=`date +%Y-%m-%d`  timestamp=`date +'%Y-%m-%d %H:%M'` -hostname=`hostname` -logFile="/var/log/${date}/${hostname}_myth_mtc.log" -log="logger -t myth_mtc -p local6.info" +hostname=`/usr/bin/hostnamectl hostname` +logFile="/var/log/${date}/${hostname}_lh_mtc.log" +log="logger -t lh_mtc -p local6.info"  if [ ! -f $logFile ]; then      touch $logFile      echo "" | $log  fi -#check logfile for Finished and if not run myth_mtc.py +#check logfile for Finished and if not run lh_mtc.py  if ! grep -q "Finished Maintenance" $logFile  then      if ! grep -q "Finished checking size of MythTV home" $logFile      then -        MYTHCONFDIR=/usr/share/mythtv unbuffer myth_mtc.py --check_home | $log +        sudo -u mythtv bash -c "MYTHCONFDIR=/usr/share/mythtv unbuffer lh_mtc.py --check_home | $log"          if [ $? = 0 ]          then              echo "" | $log @@ -32,12 +32,12 @@ then      if ! grep -q "Finished Optimize" $logFile      then -        if [ $SystemType = Frontend_only ] +        if [ $SystemType = FrontendOnly ]          then              echo "Will not run Optimize on Frontend Only systems." | $log              echo "Finished Optimize" | $log          else -            MYTHCONFDIR=/usr/share/mythtv unbuffer myth_mtc.py --optimize | $log +            sudo -u mythtv bash -c "MYTHCONFDIR=/usr/share/mythtv unbuffer lh_mtc.py --optimize | $log"              if [ $? = 0 ]              then                  echo "" | $log @@ -50,7 +50,7 @@ then      if ! grep -q "Finished Backup" $logFile && grep -q "Finished Optimize" $logFile      then -        MYTHCONFDIR=/usr/share/mythtv unbuffer myth_mtc.py --backup | $log +        sudo -u mythtv bash -c "MYTHCONFDIR=/usr/share/mythtv unbuffer lh_mtc.py --backup | $log"          if [ $? = 0 ]          then              echo "" | $log @@ -60,19 +60,20 @@ then          fi      fi -    if ! grep -q "Finished Update" $logFile -    then -        MYTHCONFDIR=/usr/share/mythtv unbuffer myth_mtc.py --update | $log -        if [ $? = 0 ] -        then -            echo "" | $log -        else -            echo "Time Exceeded" | $log -            exit -        fi -    fi +#    if ! grep -q "Finished Update" $logFile +#    then +#        sudo -u mythtv bash -c "MYTHCONFDIR=/usr/share/mythtv unbuffer lh_mtc.py --update | $log" +#        if [ $? = 0 ] +#        then +#            echo "" | $log +#        else +#            echo "Time Exceeded" | $log +#            exit +#        fi +#    fi -    if grep -q "Finished checking size of MythTV home" $logFile && grep -q "Finished Optimize" $logFile && grep -q "Finished Backup" $logFile && grep -q "Finished Update" $logFile +#    if grep -q "Finished checking size of MythTV home" $logFile && grep -q "Finished Optimize" $logFile && grep -q "Finished Backup" $logFile && grep -q "Finished Update" $logFile +    if grep -q "Finished checking size of MythTV home" $logFile && grep -q "Finished Optimize" $logFile && grep -q "Finished Backup" $logFile      then          echo "Finished Maintenance" | $log      fi diff --git a/linhes/linhes-system/myth_mtc.py b/linhes/linhes-system/lh_mtc.py index 1a71aa9..f79314e 100755 --- a/linhes/linhes-system/myth_mtc.py +++ b/linhes/linhes-system/lh_mtc.py @@ -28,25 +28,23 @@ def getFreePercentForDir(dir):  def check_home():      #get the mythtv home dir -    sys.path.append('/usr/MythVantage/bin/') -    config_file = "mv_config" -    data_config = __import__(config_file,  globals(),  locals(),  []) +    MYTHHOME=subprocess.check_output("lh_home_check.sh").decode('utf-8').strip() -    freePcent = getFreePercentForDir(data_config.MYTHHOME) +    freePcent = getFreePercentForDir(MYTHHOME)      print("  Home directory percent used: " + str(freePcent * 100) + "%")      if float(freePcent) > .9:          print("    Home directory is greater than 90% used. Clearing caches...") -        cmd = "/usr/bin/rm -rf " + data_config.MYTHHOME + "/.mythtv/{*cache,Cache-*,tmp/*,MythMusic/AlbumArt/*}" +        cmd = "/usr/bin/rm -rf " + MYTHHOME + "/.mythtv/{*cache,Cache-*,tmp/*,MythMusic/AlbumArt/*}"          subprocess.call(["sh", "-c", cmd])          print("    Restarting mythfrontend...")          subprocess.call(["killall", "mythfrontend"]) -        cmd = "/usr/bin/rm -rf " + data_config.MYTHHOME + "/.cache/*" +        cmd = "/usr/bin/rm -rf " + MYTHHOME + "/.cache/*"          subprocess.call(["sh", "-c", cmd]) -        cmd = "/usr/bin/rm -rf " + data_config.MYTHHOME + "/.plexht/userdata/Thumbnails/*" +        cmd = "/usr/bin/rm -rf " + MYTHHOME + "/.plexht/userdata/Thumbnails/*"          subprocess.call(["sh", "-c", cmd]) -        cmd = "/usr/bin/rm -rf " + data_config.MYTHHOME + "/.plexht/userdata/ThemeMusicCache/*" +        cmd = "/usr/bin/rm -rf " + MYTHHOME + "/.plexht/userdata/ThemeMusicCache/*"          subprocess.call(["sh", "-c", cmd]) -        freePcent = getFreePercentForDir(data_config.MYTHHOME) +        freePcent = getFreePercentForDir(MYTHHOME)          print("  Home directory percent used: " + str(freePcent * 100) + "%")      else:          print("    Home directory is less than 90% used. Not clearing caches.") diff --git a/linhes/linhes-system/lh_system_backup b/linhes/linhes-system/lh_system_backup new file mode 100755 index 0000000..f970f4f --- /dev/null +++ b/linhes/linhes-system/lh_system_backup @@ -0,0 +1,29 @@ +#!/bin/bash +. /etc/systemconfig +lh_notify-send "Starting Backup..." +#alert user the database will not be backed up +if [ $SystemType != MasterBackend -a $SystemType != Standalone ] +then +    lh_notify-send "This is not the Master backend.\n Skipping backup of database." +fi + +if [ $SystemType = MasterBackend -o $SystemType = Standalone ] +then +    backend_control.sh stop 127.0.0.1 +fi + +#do the backup +lh_system_backup_job  2>&1 > /var/run/backup.log +rc=$? +if [ $SystemType = MasterBackend -o  $SystemType = Standalone ] +then +    backend_control.sh start 127.0.0.1 +fi + +if [ $rc = 0 ] +then +    complete_message="Backup completed successfully." +else +    complete_message="Backup failed." +fi +lh_notify-send "$complete_message" diff --git a/linhes/linhes-system/lh_system_backup_job b/linhes/linhes-system/lh_system_backup_job new file mode 100755 index 0000000..257bb87 --- /dev/null +++ b/linhes/linhes-system/lh_system_backup_job @@ -0,0 +1,330 @@ +#!/bin/bash +#process that uses this system backup script +# - lh_mtc.py + +MYTH_RUN_STATUS="1" +. /etc/profile +. /etc/systemconfig +BACKUPDIR=/data/storage/disk0/backup/system_backups +SECBACKUPLINK=/data/storage/disk1 +KeepBackups=14 +DATE=`date +%F_%H-%M` +backup_status=0 +# + +MYTHSHUTDOWN="/usr/bin/mythshutdown" + +function lock_myth(){ +    $MYTHSHUTDOWN --lock +} + +function unlock_myth(){ +    $MYTHSHUTDOWN --unlock +} + +function backup_status_check(){ +    if [ $1 -ne 0 ] +    then +        backup_status=1 +    fi +} + + +function backup(){ + +    echo +    echo "Starting Backup" +    mkdir -p $BACKUPDIR/$DATE + +    #backup database +    if [ $SystemType = Master_backend -o  $SystemType = Standalone ] +    then +        echo +        echo "Backup mysql databases" +        pacman -Q mysql 2>/dev/null +        if [ $? = 0 ] +        then +            echo "    mythconverg  (mythtv database)" +            mysqldump -x mythconverg > $BACKUPDIR/$DATE/mythconverg +            backup_status_check $? + +            echo "    ncid (caller id)" +            mysqldump -x ncid > $BACKUPDIR/$DATE/ncid  2>/dev/null + +            #this is all the users +            echo "    users" +            mysqldump -x mysql > $BACKUPDIR/$DATE/mysql_table + +            #this is everything +            echo "    All databases in one file" +            mysqldump -x --all-databases > $BACKUPDIR/$DATE/all_databases +            backup_status_check $? +        fi +    fi + +    echo "Backup saved settings" +    if [ -e  /usr/MythVantage/templates/settings ] +    then +        cp -rp  /usr/MythVantage/templates/settings $BACKUPDIR/$DATE/settings +        backup_status_check $? +    fi + +    echo "Backup etc" +    cp -rp /etc  $BACKUPDIR/$DATE/etc +    if [ -e /var/lib/oss ] +    then +        cp -rp /var/lib/oss $BACKUPDIR/$DATE/oss +        backup_status_check $? +    fi + +    echo "Backup func keys" +    cp -rp /etc/pki $BACKUPDIR/$DATE/pki + +    echo "Backup Plex Media Server databases and preferences" +    if [ -e  /data/storage/disk0/media/plex/Plex\ Media\ Server/Plug-in\ Support ] +    then +        mkdir $BACKUPDIR/$DATE/plex +        backup_status_check $? +    fi +    if [ -e  /data/storage/disk0/media/plex/Plex\ Media\ Server/Plug-in\ Support/Databases ] +    then +        cp -rp /data/storage/disk0/media/plex/Plex\ Media\ Server/Plug-in\ Support/Databases $BACKUPDIR/$DATE/plex/Databases +        backup_status_check $? +    fi +    if [ -e  /data/storage/disk0/media/plex/Plex\ Media\ Server/Plug-in\ Support/Preferences ] +    then +        cp -rp /data/storage/disk0/media/plex/Plex\ Media\ Server/Plug-in\ Support/Preferences $BACKUPDIR/$DATE/plex/Preferences +        backup_status_check $? +    fi + +    #create default backup_exclude.txt +    if [ ! -f $MYTHHOME/backup_config/backup_exclude.txt ] +    then +        mkdir -p $MYTHHOME/backup_config/ +        touch $MYTHHOME/backup_config/backup_exclude.txt +        chmod 777 $MYTHHOME/backup_config/backup_exclude.txt +    fi + +    for i in ".mythtv/cache" ".mythtv/themecache" ".mythtv/remotecache" ".mythtv/Cache-myth*" ".cache" "tmp" ".vnc/*log" ".vnc/*pid" ".plexht/userdata/Thumbnails" ".plexht/userdata/ThemeMusicCache" ".kodi/userdata/Thumbnails" +    do +        grep -qF "$i" $MYTHHOME/backup_config/backup_exclude.txt +        rc=$? +        if [ $rc != 0 ] +        then +            echo "$i" >> $MYTHHOME/backup_config/backup_exclude.txt +        fi +    done + +    echo "Backup home dirs" +    HOMEDIRS="" +    tar -zcf $BACKUPDIR/$DATE/home_dir.tar.gz -X $MYTHHOME/backup_config/backup_exclude.txt  $MYTHHOME $HOMEDIRS + +    if [ -f $MYTHHOME/backup_config/backup_include.txt ] +    then +        echo +        echo "Backup items from $MYTHHOME/backup_config/backup_include.txt" +        tar -zcf $BACKUPDIR/$DATE/other.tar.gz -T $MYTHHOME/backup_config/backup_include.txt +        backup_status_check $? +    fi + +    echo "Compress backup file" +    cd $BACKUPDIR +    tar -zcf $BACKUPDIR/backup.$DATE.tgz  $DATE +    backup_status_check $? +    if [ -d $BACKUPDIR/$DATE ] +    then +        rm -rf $BACKUPDIR/$DATE +    fi + +    if [ $backup_status -eq 0 ] +    then +        BACKUPPATH=$BACKUPDIR/backup.$DATE.tgz +    else +        echo "Backup had an error" +        mkdir $BACKUPDIR/errored_backups +        mv $BACKUPDIR/backup.$DATE.tgz $BACKUPDIR/errored_backups/backup.$DATE.tgz +        BACKUPPATH=$BACKUPDIR/errored_backups/backup.$DATE.tgz +    fi + +    if [ -f /home/xymon/server/ext/hbnotes.py ] +    then +        /home/xymon/server/ext/hbnotes.py +        chown nobody:nobody /data/srv/httpd/htdocs/hobbit/notes/* 2> /dev/null >/dev/null +    fi +    echo +    echo "Created backup file:" +    echo "    $BACKUPPATH" +} + +function update_backup_status(){ +    echo +    # Add Last backup status to menu item +    #if description not in the backup xml file, add it +    if [ $rc=0 ] +    then +        COMPLETE_MSG="Last backup completed `date '+%D %-I:%M %p'`" +    else +        COMPLETE_MSG="Last backup FAILED `date '+%D %-I:%M %p'`" +    fi +    echo "Updating menu with:" +    echo "    $COMPLETE_MSG" +    xmlfile="/usr/share/mythtv/themes/defaultmenu/mythbackup.xml" + +    grep  -q "<description>" $xmlfile >/dev/null +    desc_check=$? + +    if [ $desc_check = 0 ] +    then +        sed -i "0,/<description\>.*\<description\>/s||\<description\>$COMPLETE_MSG<\/description|" $xmlfile +        #sed -i "0,/\<description\>.*\<description\>/s//\<description\>$COMPLETE_MSG\<\/description/" $xmlfile +    else +        sed -i " /NONE/ i\     \<description\>$COMPLETE_MSG\<\/description\>" $xmlfile +    fi +} + +function remove_old_backups(){ + +    #remove old backups +    NumBackups=`ls $BACKUPDIR/backup*.tgz|wc -l` +    if [[ $NumBackups -gt  $KeepBackups ]]; then +        numdel=$(($NumBackups-$KeepBackups)) +        rm -f `ls $BACKUPDIR/backup*.tgz -tr1|head -$numdel` +    fi +} + + +function remote_backup(){ +    echo +    echo "Remote backup" +    #Remote copy +    if [ x$RemoteBackup = x1 ] +    then +        localRemoteCheck=`echo $RemoteBackupDir | cut -d: -f1` +        if [  x$localRemoteCheck =  xdir ] +        then +            localRemotedir=`echo $RemoteBackupDir | cut -d: -f2` +            echo "    copying $BACKUPDIR/backup.$DATE.tgz to  $localRemotedir  " +            cp $BACKUPDIR/backup.$DATE.tgz  $localRemotedir +        else +            /usr/bin/func  ${RemoteBackupDir}  ping| grep -q "FAILED" +            rc=$? +            if [ $rc = 0 ] +            then +                #this is here to mark failed copy of the backup. +                #There is a cron.hourly job that will attempt to retransfer the file +                echo "    Remote backup failed to ${RemoteBackupDir}" +                echo backup.$DATE.tgz >> $BACKUPDIR/remote_backup_failed.txt +            else +                echo "    copying $BACKUPDIR/backup.$DATE.tgz to  ${RemoteBackupDir}:$BACKUPDIR/MBE_$DATE.tgz" +                /usr/bin/func  ${RemoteBackupDir} copyfile  -f  $BACKUPDIR/backup.$DATE.tgz  --remotepath $BACKUPDIR/MBE_$DATE.tgz +            fi +        fi +    else  #do local copy to SECBACKUPLINK +        echo "    Remote backup is not enabled, copying backup to another drive on this system." +        SECBACKUPDISK=`readlink $SECBACKUPLINK` + +        if [ -z $SECBACKUPDISK ] +        then +            for dir in /data/storage/disk* +            do +                if [ $dir == /data/storage/disk0 ] +                then +                    continue +                fi +                TESTDIR=`readlink $dir` +                if [ -n $TESTDIR ] +                then +                    SECBACKUPDISK=$TESTDIR +                    break +                fi +            done +        fi + +        if [ -n "$SECBACKUPDISK" ]; then +            SECBACKUP=$SECBACKUPDISK/backup +            if [ `mountpoint -q -d $SECBACKUPDISK` ]; then +                if [ ! -d "$SECBACKUP" ]; then +                    mkdir -p -m 775 $SECBACKUP +                    echo "    Created $SECBACKUP" +                    chown mythtv:users $SECBACKUP +                fi +                echo "    Copying system backups to $SECBACKUP" +                rsync -au --delete $BACKUPDIR $SECBACKUP +            else +                echo "    $SECBACKUPDISK isn't mounted." +            fi +        else +            echo "    Could not find another drive on this system." +        fi +    fi +} + +function remote_transfer(){ +    transfer_file=${1} +    echo $transfer_file +    /usr/bin/func  ${RemoteBackupDir}  ping| grep -q "FAILED" +    rc=$? +    if [ $rc = 0 ] +    then +        #this is here to mark a failed copy of the backup. +        #There is a cron.hourly job that will attempt to retransfer the file +        echo "    Remote backup failed to ${RemoteBackupDir}" +        echo $transfer_file >> $BACKUPDIR/remote_backup_failed.txt +    else +        echo "    copying $BACKUPDIR/$transfer_file to  ${RemoteBackupDir}:$BACKUPDIR/MBE_$transfer_file" +        /usr/bin/func  ${RemoteBackupDir} copyfile  -f  $BACKUPDIR/$transfer_file  --remotepath $BACKUPDIR/MBE_$transfer_file +    fi +} + +function add_link(){ +    if [ -f $BACKUPDIR/remote_backup_failed.txt ] +    then +        RETRYFILE="/etc/cron.hourly/lh_backup_retry.sh" +        echo "#!/bin/bash" > $RETRYFILE +        echo "#This file was autogenerated and will be removed by lh_system_backup_job" >> $RETRYFILE +        echo "MYTH_RUN_STATUS=1">> $RETRYFILE +        echo ". /etc/profile">> $RETRYFILE +        echo "lh_system_backup_job retry">> $RETRYFILE +        chmod 755 $RETRYFILE +    fi +} + +function remove_link(){ +    RETRYFILE="/etc/cron.hourly/lh_backup_retry.sh" +    if [ ! -f $BACKUPDIR/remote_backup_failed.txt ] +    then +        rm -f $RETRYFILE +    fi +} + + +#------------------------------------ +lock_myth +if [ "x$1" = "x" ] +then +    backup +    update_backup_status +    #only remove old backups if there was no problems +    if [ $backup_status -eq 0 ] +    then +        remove_old_backups +    fi +    remote_backup +    add_link +else +    #this is where we attempt to transfer again as part of the cronjob +    if [ -f $BACKUPDIR/remote_backup_failed.txt ] +    then +        mv -f $BACKUPDIR/remote_backup_failed.txt /tmp +        while read line +        do +            echo $line +            remote_transfer $line +        done < /tmp/remote_backup_failed.txt +        rm -f /tmp/remote_backup_failed.txt +    fi +    remove_link +fi +unlock_myth +echo $backup_status > /var/run/systembackup.rc +exit $backup_status diff --git a/linhes/linhes-system/lh_system_start.sh b/linhes/linhes-system/lh_system_start.sh index 5e84bc6..eab8594 100755 --- a/linhes/linhes-system/lh_system_start.sh +++ b/linhes/linhes-system/lh_system_start.sh @@ -66,7 +66,7 @@ function install_lh_apps(){      #install programs that are not needed on the iso      #check network connection      netwait=0 -    while ! nc -zw1 1.1.1.1 443; do +    while [ ! nc -zw1 1.1.1.1 443 ]; do          [ $netwait -gt 12 ] && msg "Could not install apps. Check internet connection. Cancelling Setup." && exit 1          msg "Waiting for internet connectivity..."          ((netwait++)) @@ -74,12 +74,8 @@ function install_lh_apps(){      done      msg "Installing apps."      konsole -e /bin/bash -i -c "sudo pacman -Syyy --noconfirm archlinux-keyring && sudo pacman -Syyy --noconfirm mythtv mythplugins-mytharchive mythplugins-mythmusic mythplugins-mythweb && flatpak install tv.plex.PlexHTPC --noninteractive --assumeyes && sudo flatpak override tv.plex.PlexHTPC --filesystem=/run/lirc/lircd" -    #sudo pacman -Syyy --noconfirm archlinux-keyring -    #sudo pacman -Syyy --noconfirm flatpak firefox glances mlocate mythtv mythplugins-mytharchive mythplugins-mythmusic mythplugins-mythweb ncdu x11vnc -    #sudo pacman -Syyy --noconfirm mythtv mythplugins-mytharchive mythplugins-mythmusic mythplugins-mythweb      status=$?      [ $status -eq 1 ] && msg "Could not install apps. Check internet connection. Cancelling Setup." && exit 1 -    #flatpak install tv.plex.PlexHTPC --noninteractive --assumeyes      gen_lib_xml.py  } @@ -122,6 +118,7 @@ function first_configure(){              # create media directory structure              sudo mkdir -p /data/storage/disk0              sudo create_media_dirs.sh /data/storage/disk0 +            sudo ln -s /data/storage/disk0/media/ /myth              # setup DB              sql_setup              # run mythtv-setup | 
