Bash Style Archive
Field Script
Prerequisites
sudo apt-get install hfsprogs
## NOTE is saw that we should disable journaling on the external drive before writing with Linux
sudo mount -t hfsplus -o force,rw /dev/sdXY /media/mntpoint
# or
sudo mount -t hfsplus -o remount,force,rw /mount/point
HowTo
Attach flight drive to archive CPU
Attach mirror drive to rsync to (either HFS+ journaling disabled or EXT4)
Attach archive drive which will get the compressed mjd tar file for each day
rsync the flight data to the mirror drive (directory by directory at top level)
run compress script (see below) to generate a MMMMM_0.tar.gz for each flight day on the archive drive
later you can add MMMMM_[1-z].tar.gz for any additional files that were missed?
Database
Ideas for this in the field
Can we generate a csv (white space or commas?) data base of all the files that are on original and mirror drives?
Disk Label, Disk Serial Number would be additional fields to the md5deep with size and access time information so we can quickly assess how much of each kind of data we have (oh top level directory type stats also: gps, imu, camera, rtlvis running stats for all the dirs one down from Mission level
How about
Just have the file name either ARCHIVE_DRIVESERIALNUMBER.md5.txt for each drive that is an archive (have blown up the md5deep information within each tar?)
for the orignal and mirror do MIRROR_DRIVESERIALNUMBER.md5.txt with the information (append on any new files not already in the file… touch the file if non-exists)
Ingest script:
Check the mount point to see if it is FLIGHT, MIRROR or ARCHIVE (want to expand this to have GPS, APPLANIX also? Could also have specific drive serial numbers that are known data drives (USB sticks or Applanix CF cards for instance))
Grab the drive Make and Serial Number to use in file name creation
Ingest Logic on each file
Does the meta data exist? MIRROR_DRIVESERIALNUMBER.meta.txt If not.. just touch it!
How to avoid double md5deep calculation ? (if you do the -X it calculates and compares, then we could just run on the output of that… maybe that's a special –switch to make it go faster)
Do it and then see if entry is already in the file… if so skip, if not add This will catch files with different times, etc… I think this makes the most sense, least likely to have an issue and defaults to ingest this data.
Compress All Dirs To A Folder
lvis@lvis-dell-xps:~/bin$ more compress_all_mjd.sh
#!/bin/bash
echo "Usage $0 <input dir> <output dir>"
M_INPUTDIR=$(echo $1 | sed '/\/$/! s|$|/|') # add a slash if necessary
M_OUTPUTDIR=$(echo $2 | sed '/\/$/! s|$|/|') # found online
echo Input: $M_INPUTDIR
echo Output: $M_OUTPUTDIR
cd $M_INPUTDIR
for f in *; do
if [ -d "$f" ]; then
M_BASENAME=$(basename $f)
re='^[0-9]+$' # check if this is a just a number (day mjd) (found online)
if [[ $M_BASENAME =~ $re ]] ; then
M_TARFILE="${M_OUTPUTDIR}${M_BASENAME=}_raw_data.tar.gz"
echo "Run on $f which is $M_BASENAME"
time tar cf - $f | pigz > $M_TARFILE
fi
fi
done
Mount Tar As Filesystem
Options we might be interested in
-o readonly
disable write support
-o nobackup
remove archive file backups
Install if not already on the system
sudo apt install -y archivemount
Create a mount point
mkdir /tmp/myfiles
Mount the tar file as read only
# read / write mount which makes a .orig file
archivemount myfiles.tar.gz /tmp/myfiles
# read / write mount without any backup
archivemount -o nobackup myfiles.tar.gz /tmp/myfiles
# read only
archivemount -o readonly myfiles.tar.gz /tmp/myfiles
Read data out of archive as if it were a file
Remove the mount
cd && umount /tmp/myfiles