#!/bin/bash Z_OUTPATH="/g/PS3ISO" Z_OUTNAME="$(basename "${1}")" Z_SPLIT="4095M" Z_REMOVE=1 if [ ! -z "${2}" ]; then if [ -d "${2}" ]; then Z_OUTPATH="${2}" fi fi # Script will work with files that require 100 or less parts. # At 101, split will fail. # ptiso is from Pismo File Mount Audit Package # http://pismotec.com/pfm/ap/ if [ "${OS}" != "Windows_NT" ]; then echo "This script is designed for use under Cygwin, on an 64-bit Windows NT OS (7 or newer)" exit 1; fi if [ -f "${1}" ]; then # Check if ciso, if so, uncompress via ptiso pipe if [ "$(echo ${1} | rev | cut -d'.' -f1 | rev)" == "ciso" ]; then Z_OUTNAME=$(echo "${Z_OUTNAME}" | sed 's|.ciso|.iso|') ptiso convert "$(cygpath -w "${1}")" - | split -b ${Z_SPLIT} -d -a 2 - "${Z_OUTPATH}/${Z_OUTNAME}." else # Not compressed ISO, so just process echo "Files will be renamed to the correct .iso.# syntax after completion" split --verbose -b ${Z_SPLIT} -d -a 2 "${1}" "${Z_OUTPATH}/${Z_OUTNAME}." fi OLDIFS="${IFS}" IFS=$'\n' for f in $(ls -1 "${Z_OUTPATH}/${Z_OUTNAME}.0"?); do Z_EXT=$(echo $f | rev | cut -d'.' -f1 | rev) Z_FILE=$(echo $f | rev | cut -d'.' -f2- | rev) mv "${f}" "${Z_FILE}.$((10#$Z_EXT))" done; IFS="${OLDIFS}" if [ -f "${Z_OUTPATH}/${Z_OUTNAME}.0" ]; then if [ $(ls -l "${Z_OUTPATH}/${Z_OUTNAME}."* | wc -l) -eq 1 ]; then echo "Moving single file from .iso.0 to .iso..." mv "${Z_OUTPATH}/${Z_OUTNAME}.0" "${Z_OUTPATH}/${Z_OUTNAME}" fi fi if [ ! -z "${Z_REMOVE}" ]; then echo "Removal of original file requested, so validating first..." echo -n "Checking SHA1 Hash of source file..." Z_SHASRC=$(sha1sum "${1}" | cut -d' ' -f1) echo " ${Z_SHASRC}" if [ -f "${Z_OUTPATH}/${Z_OUTNAME}" ]; then echo -n "Checking SHA1 Hash of destination file (no split)..." Z_SHADST=$(sha1sum "${Z_OUTPATH}/${Z_OUTNAME}" | cut -d' ' -f1); else Z_COUNT=$(ls -1 "${Z_OUTPATH}/${Z_OUTNAME}."* 2>/dev/null | wc -l) echo -n "Checking SHA1 Hash of concatenated split ISO (${Z_COUNT} parts)..." Z_FILES=$( for f in $(seq 0 $(expr ${Z_COUNT} - 1)); do echo "${Z_OUTPATH}/${Z_OUTNAME}.${f}" done ) IFS=$'\n' Z_SHADST=$(cat ${Z_FILES} | sha1sum | cut -d' ' -f1) IFS="${OLDIFS}" fi echo " ${Z_SHADST}" if [ ! -z "${Z_SHASRC}" ] && [ ! -z "${Z_SHADST}" ] && [ "${Z_SHASRC}" == "${Z_SHADST}" ]; then echo "Validated. Removing source file..." rm "${1}" else echo "NOT VALIDATED. Not removing any files. Please check destination disk integrity." exit 1 fi fi fi