Hi Thomas,

On Sun, 2025-01-19 at 09:37 +0100, Thomas Schmitt wrote:
> Hi,
> 
> Bob McGowan wrote:
> > One question, what I would like to see is a duplicated
> > directory/file
> > hierachy on the destination.  I have lists of file names in groups
> > just
> > short of 25G,  but I can't find an easy way to send the file names
> > to
> > any of the programs and have them maintain the hierarchy.  They
> > just
> > dump all the files in the root of the destination.
> > 
> > I did manage this for a few files with 'xorriso -update_r' option
> > used
> > once per file name and with the full destination path and file name
> > listed:
> > 
> >    xorriso -update_r /home/me/topdir/file /topdir/file ...
> > 
> > But doing this for thousands of files doesn't seem like it is a
> > manageable or robust solution.
> 
> It's not unfeasible.
> man xorriso says:
> 
>   -options_from_file fileaddress
>          Read quoted input from fileaddress and execute  it  like 
> dialog
>          lines.   Empty  lines  and  lines  which begin by # are
> ignored.
>          Normally one line should hold one xorriso command  and  all 
> its
>          parameters.    Nevertheless  lines  may  be  concatenated 
> by  a
>          trailing backslash.
>          See also section "Command processing", paragraph "Quoted
> input".
> 
> That paragraph says:
> 
>   Quoted input converts whitespace-separated text into words.  The
> double
>   quotation mark " and the single quotation mark ' can be used to
> enclose
>   whitespace  and  make  it part of words (e.g. of file names). Each
> mark
>   type can enclose the marks of the other type. A  trailing 
> backslash  \
>   outside quotations or an open quotation cause the next input line
> to be
>   appended.
>   [...]
> 
> So you may quote whitespace like blanks, tabs or newline characters
> like
> in the shell:
> 
>   -update_r "/home/me/topdir/filename with blanks" "/topdir/filename
> with blanks"
>   ...more.update_r.commands...
> 
> Since you seem not to strive for adding sessions to already existing
> ISO 9660 filesystems, you may also use -map or -map_single :
> 
>   -map "/home/me/topdir/filename with blanks" "/topdir/filename with
> blanks"
>   ...more.map.commands...
> 
> about which the man page says:
> 
>   -map disk_path iso_rr_path
>          Insert file object disk_path into the ISO image as 
> iso_rr_path.
>          If  disk_path is a directory then its whole sub tree is
> inserted
>          into the ISO image.
> 
>   -map_single disk_path iso_rr_path
>          Like -map, but if disk_path is a directory then its sub
> tree  is
>          not inserted.
> 
> I.e. these two commands do not ponder whether the iso_rr_path already
> leads to an up-to-date version of the file in the ISO filesystem, but
> rather copy disk_path to iso_rr_path unconditionally.
> 
> You would write all intended xorriso commands into a disk file, e.g.
>   /home/me/xorriso_commands
> and then let xorriso process it by command -options_from_file like
> in:
> 
>   xorriso \
>     -for_backup \
>     -outdev /dev/sr0 \
>     -blank as_needed \
>     -options_from_file /home/me/xorriso_commands \
>     -commit -toc -check_md5 FAILURE -- -eject all
> 
> ---------------------------------------------------------------------
> --
> 
> Another approach is to create a file with a list of pathspecs which
> are
> a concept from program mkisofs:
> 
>   -path_list disk_path
>          Like -add but read the parameter words from  file 
> disk_path  or
>          standard  input  if  disk_path  is  "-".   The list must
> contain
>          exactly one pathspec or disk_path pattern per line.
> 
> The command -add inserts files into the emerging ISO image in a way
> that
> is usual with mkisofs:
> 
>   -add pathspec [...] | disk_path [***]
>          Insert  the  given files or directory trees from filesystem
> into
>          the ISO image.
>          If -pathspecs is  set  to  "on"  or  "as_mkisofs"  then 
> pattern
>          expansion  is  always  disabled  and character '=' has a
> special
>          meaning. It separates the ISO image path from the disk path:
>          iso_rr_path=disk_path
>          Character '=' in the iso_rr_path must be escaped by '\'
> (i.e. as
>          "\=").
>          With -pathspecs "on", the character '\' must not be escaped.
> The
>          character '=' in the disk_path must not be escaped.
>          With -pathspecs "as_mkisofs", all characters '\' must be
> escaped
>          in both, iso_rr_path and disk_path. The character '=' may or
> may
>          not be escaped in the disk_path.
>          If iso_rr_path does not begin with '/' then  -cd  is 
> prepended.
>          If disk_path does not begin with '/' then -cdx is prepended.
>          If  no  '='  is given then the word is used as both,
> iso_rr_path
>          and disk path.  If in this case the word does not begin with
> '/'
>          then  -cdx is prepended to the disk_path and -cd is
> prepended to
>          the iso_rr_path.
>          ...
> 
>   -pathspecs "on"|"off"|"as_mkisofs"
>          Control parameter interpretation with xorriso actions  -add 
> and
>          -path_list.
>          Mode "as_mkisofs" enables pathspecs of the form
>            iso_rr_path=disk_path
>          like with program mkisofs -graft-points.
>          ...
> 
> With this approach you would write lines like
> 
>   /topdir/file=/home/me/topdir/file
>   /topdir/filename with blanks=/home/me/topdir/filename with blanks
>   /topdir/filename with \= in it=/home/me/topdir/filename with = in
> it
> 
> into a disk file, e.g.
>   /home/me/xorriso_pathspecs
> and perform in -path_list xorriso:
> 
>   xorriso \
>     -for_backup \
>     -outdev /dev/sr0 \
>     -blank as_needed \
>     -pathspecs as_mkisofs \
>     -path_list /home/me/xorriso_pathspecs \
>     -commit -toc -check_md5 FAILURE -- -eject all
> 
> ---------------------------------------------------------------------
> --
> How i handle my larger backups:
> 
> I assume that you want to split a larger collection of files into
> groups which fit on the BD media.
> Nearly half a life ago, my own endeavor with ISO 9660 and optical
> media
> began with creating a tool which does this splitting automatically:
> 
>   http://scdbackup.webframe.org/main_eng.html
>   http://scdbackup.webframe.org/examples.html
> 
> BD is configured and handled by the DVD configuration and commands of
> scdbackup.
> Once:
> 
>   ./CONFIGURE_DVD
> 
> With each backup, you'd do something like:
> 
>   sdvdbackup /topdir=/home/me/topdir -not /home/me/topdir/temp_files
> 
> Back then there was only mkisofs for producing ISO 9660. So
> sdvdbackup
> uses its pathspecs notation for defining the mapping from disk to BD.
> Of course i meanwhile use xorriso for the roles of cdrecord,
> growisofs
> and mkisofs.
> 
> I'm still backing up multi-media file collections by help of
> sdvdbackup.
> Backups which fill dozens of media might become lengthy. So there is
> also
> the opportunity to perform incremental backups:
> 
>   http://scdbackup.webframe.org/examples.html#incremental
> 
> ---------------------------------------------------------------------
> --
> 
> Have a nice day :)
> 
> Thomas
> 
Thank you for your guidance and patience.  The -options_from_file is
exactly what I was needing and works perfectly.

Just one last question.  How do you pronounce "xorriso"? :)

I hope your day was as good as mine.

Bob

Reply via email to