главная страница
материалы
  ms access и bitmap
  win в ucs-2 на perl
  приложение facebook
  медиа библиотека
  восстановление exif
  netgear stora
  netgear stora usb
  html и javascript
  openwrt upgrade
  yandex dns
  playlist vbs
  фотоархив
  node.js
  изменения в mrtg
  windows
  конвертация
  перекодировка для tv
  перекодировка для tvix

Исключение процесса форматирования USB Flash для резервного копирования

Для того, чтобы резервное копирование не форматировала флешку и работало на любой файловой системе, были сделаны следующие изменения в библиотеке spd.

После копирования на флешку, если не ntfs, выдается ошибка записи, но в итоге резервная копия вроде создается. При ntfs все работает, как и раньше.

/usr/lib/spd/scripts/usb/format
...
# wipeUSB - if not mysafe only
# format - any way, if mysafe - make signature only
if ( $fs != "mysafe" ) {
    $retval = wipeUSB( $device );

    if ($retval == 1 )
        exit( 0 ); // wiping failed 

    $lockfile = "/tmp/format_in_progress";
    exec("echo $device >> $lockfile");
    if( partitionUSB( $device, $fs ) ) {
        unlink($lockfile);
        exit(0); // partitioning failed 
    }
}
...

/usr/lib/spd/scripts/usb/usbToolbox.php
function isMySafe( $partition ) 
{
...
#        if( $parttype != "ntfs" )
#            return false;

...
if( $parttype == "ntfs" )
        exec("/usr/bin/ntfs-3g $partition $tmpmnt 2> /dev/null", $lines, $retval );
else exec("/bin/mount $partition $tmpmnt 2> /dev/null", $lines,

...
}

function getUSBStatus()
{
...
#                        if( $parttype=="ntfs" && @stat( "$partmp/.signature" ) ) {
if( @stat( "$partmp/.signature" ) ) {
                            $ms = "mismatch";
                        }
                    }
                } else {
                    // if the key was not mounted, determine if it's
                    // mysafe
#                    if( $parttype == "ntfs" ) {
                        $msstate = isMySafe( $d );
                        if( $msstate === true )
                            $ms = "true";
                        else if( $msstate == "mismatch" )
                            $ms = $msstate;
#                    }

...
}

function signForMySafe($device)
{
...
$parttype = getPartFSType( $device );
if ( $parttype == "ntfs") {
    if( USEMYSAFELABEL == true ) 
        exec("/usr/sbin/ntfslabel $device ".MSLABEL ." 2> /dev/null");
    exec("/usr/bin/ntfs-3g $device $tmpmnt 2> /dev/null", $lines, $retval );
} else exec("/bin/mount $device $tmpmnt 2> /dev/null", $lines, $retval );

...
}

function formatUSB( $device, $fs, $label )
{
...
if ( $fs != "mysafe" ) 
    exec( $cmd, $lines, $retval );
else $retval = 0;
...
}

/usr/lib/spd/scripts/usb/usbremoveMS
...
#        $retval = mountPart( $d, $dir, "ntfs");
$fs = getPartFSType($d);
$retval = mountPart( $d, $dir, $fs);
...