Commit 5b13b266 authored by Thomas Schmitt's avatar Thomas Schmitt

Enabled -hardlinks for options -extract, -extract_l and -cp*x

parent 5fcd3217
......@@ -2,7 +2,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH XORRISO 1 "May 17, 2009"
.TH XORRISO 1 "May 26, 2009"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
......@@ -69,7 +69,7 @@ Can check media for damages and copy readable blocks to disk.
.br
Scans for optical drives, blanks re-useable optical media.
.br
Reads its instructions from command line arguments, dialog, and batch files.
Reads its instructions from command line arguments, dialog, and files.
.br
Provides navigation commands for interactive ISO image manipulation.
.br
......@@ -127,9 +127,9 @@ Adding a session to an existing ISO image is in this text referred as
The multi-session model of the MMC standard does not apply to all media
types. But program growisofs by Andy Polyakov showed how to extend this
functionality to overwriteable media or disk files which carry valid ISO 9660
filesystems. This expansion method is referred as emulated growing.
filesystems.
.PP
xorriso provides both ways of growing as well as an own method named
xorriso provides growing as well as an own method named
\fBmodifying\fR which produces a completely new ISO image from the old
one and the modifications.
See paragraph Creating, Growing, Modifying, Blind Growing below.
......@@ -535,7 +535,6 @@ Set the image expansion method to growing.
.br
This is only allowed as long as no changes are pending in the currently
loaded ISO image. Eventually one has to perform -commit or -rollback first.
Violation yields a FAILURE event.
.br
Special address string "-" means standard output, to which several restrictions
apply. See above paragraph "Libburn drives".
......@@ -613,13 +612,12 @@ overall ISO image will not be mountable or will produce read errors when
accessing file content. xorriso will write the session to the address
as obtained from examining -outdev and not necessarily to predicted_nwa.
.br
During a run of blind growing, the input drive gets released before output
begins. The output drive gets released when writing is done.
During a run of blind growing, the input drive is given up before output
begins. The output drive is given up when writing is done.
.TP
\fB\-load\fR entity id
Load a particular (possibly outdated) ISO image from a -dev or -indev which
hosts more than one session. Usually all available sessions are shown with
option -toc.
Load a particular (possibly outdated) ISO image from -dev or -indev.
Usually all available sessions are shown with option -toc.
.br
entity depicts the kind of addressing. id depicts the particular
address. The following entities are defined:
......@@ -681,6 +679,14 @@ Mode "on" preserves eventual inode numbers from the loaded image.
When committing a session it searches for families of iso_rr files
which stem from the same disk file, have identical content and have
identical properties. The family members all get the same inode number.
Whether these numbers are respected at mount time depends on the operating
system.
.br
xorriso commands which extract files from an ISO image try to restore files
with the same inode number as hardlinks. This applies only to files which
get extracted during execution of that same command. A large number of
hardlink families may exhaust -temp_mem_limit if not -osirrox option
"sort_lba_on" is in effect.
.br
Mode "on" automatically enables \fB\-compliance new_rr\fR. This may be
overridden by a following -compliance old_rr . In this case the resulting
......@@ -702,10 +708,10 @@ See also options -getfattr, -setfattr and above paragraph about xattr.
.TP
\fB\-disk_dev_ino\fR "on"|"ino_only"|"off"
Enable or disable processing of recorded file identification numbers
(dev_t and ino_t). They are eventually stored as xattr "isofs.di" and allow
(dev_t and ino_t). They are eventually stored as xattr and allow
to substantially accelerate file comparison. The root node gets a global start
timestamp in "isofs.st". If during comparison a file with younger timestamps
is found in the ISO image, then it is suspected to have inconsistent content.
timestamp. If during comparison a file with younger timestamps is found in the
ISO image, then it is suspected to have inconsistent content.
.br
If device numbers and inode numbers of the disk filesystems are persistent
and if no irregular alterations of timestamps or system clock happen,
......@@ -2614,6 +2620,12 @@ Option "auto_chmod_off" is default. If "auto_chmod_on" is set then access
restrictions for disk directories get circumvented if those directories
are owned by the effective user who runs xorriso. This happens by temporarily
granting rwx permission to the owner.
.br
Option "sort_lba_on" may improve read performance with optical drives. It
allows to restore large numbers of hardlinks without exhausting
-temp_mem_limit. It does not preserve directory mtime and it needs
-osirrox option auto_chmod_on in order to extract directories which offer no
write permission. Default is "sort_lba_off".
.TP
\fB\-extract\fR iso_rr_path disk_path
Restore the file objects at and underneath iso_rr_path to their corresponding
......@@ -2891,7 +2903,8 @@ Mode "on" is
.TP
\fB\-temp_mem_limit\fR number["k"|"m"]
Set the maximum size of temporary memory to be used for image dependent
buffering. Currently this applies to pattern expansion only.
buffering. Currently this applies to pattern expansion, LBA sorting,
restoring of hardlinks.
.br
Default is 16m = 16 MiB, minimum 64k = 64 kiB, maximum 1024m = 1 GiB.
.TP
......@@ -3345,7 +3358,7 @@ on media and if the expected changes are much smaller than the full backup.
To apply zisofs compression to those data files which get newly copied from
the local filesystem, perform immediately before -commit :
.br
-find / -type f -lba_range -1 2000000000 -exec set_filter --zisofs --
-find / -type f -pending_data -exec set_filter --zisofs --
.br
Option -disk_dev_ino depends on stable device and inode numbers on disk.
Without it, an update run will probably save no time but last longer than
......
This diff is collapsed.
......@@ -104,6 +104,8 @@ struct XorrisO { /* the global context of xorriso */
unique ones for all loaded IsoNode.
bit1= at image generation time:
Do not consolidate suitable nodes to hardlinks.
bit2= at restore-to-disk time:
Do not consolidate suitable nodes to hardlinks.
*/
int do_joliet;
......@@ -258,6 +260,10 @@ struct XorrisO { /* the global context of xorriso */
int do_auto_chmod; /* 1= eventually temporarily open access permissions
of self-owned directories during restore
*/
int do_restore_sort_lba; /* 1= restore via node_array rather than via
tree traversal. Better read performance,
no directory mtime restore, needs do_auto_chmod
*/
int dialog; /* 0=off , 1=single-line , 2=multi-line */
......@@ -386,6 +392,10 @@ struct XorrisO { /* the global context of xorriso */
int node_counter;
int node_array_size;
void **node_array;
char **node_targets; /* Memorizes eventual hardlink target paths */
off_t node_targets_availmem;
struct Xorriso_lsT *node_disk_prefixes;
struct Xorriso_lsT *node_img_prefixes;
struct PermiteM *perm_stack; /* Temporarily altered dir access permissions */
......@@ -541,6 +551,11 @@ int Xorriso_lsx_filev(struct XorrisO *xorriso, char *wd,
int Xorriso_rmx(struct XorrisO *xorriso, off_t boss_mem, char *path, int flag);
/* @param flag bit7= return 4 if restore fails from denied permission
do not issue error message
@return <=0 failure , 1 success ,
4 with bit7: permission to create file was denied
*/
int Xorriso_make_tmp_path(struct XorrisO *xorriso, char *orig_path,
char *tmp_path, int *fd, int flag);
......@@ -551,8 +566,24 @@ int Xorriso_make_tmp_path(struct XorrisO *xorriso, char *orig_path,
int Xorriso_reassure_restore(struct XorrisO *xorriso, char *path, int flag);
/* @param flag bit0= change regardless of xorriso->do_auto_chmod
bit1= desired is only rx
*/
int Xorriso_auto_chmod(struct XorrisO *xorriso, char *disk_path, int flag);
int Xorriso_make_accessible(struct XorrisO *xorriso, char *disk_path,int flag);
/* @param flag bit0= prefer to find a match after *img_prefixes
(but deliver img_prefixes if no other can be found)
*/
int Xorriso_make_restore_path(struct XorrisO *xorriso,
struct Xorriso_lsT **img_prefixes, struct Xorriso_lsT **disk_prefixes,
char img_path[SfileadrL], char disk_path[SfileadrL], int flag);
int Xorriso_restore_make_hl(struct XorrisO *xorriso,
char *old_path, char *new_path, int flag);
int Xorriso_protect_stdout(struct XorrisO *xorriso, int flag);
......@@ -609,8 +640,6 @@ int Xorriso_path_setfattr(struct XorrisO *xorriso, void *in_node, char *path,
int Xorriso_status_result(struct XorrisO *xorriso, char *filter, FILE *fp,
int flag);
int Xorriso_destroy_node_array(struct XorrisO *xorriso, int flag);
int Sfile_str(char target[SfileadrL], char *source, int flag);
double Sfile_microtime(int flag);
......
#define Xorriso_timestamP "2009.05.17.115101"
#define Xorriso_timestamP "2009.05.26.140055"
This diff is collapsed.
......@@ -181,7 +181,7 @@ int Xorriso_findi(struct XorrisO *xorriso, struct FindjoB *job,
bit1= do not perform job->action on resulting node array
*/
int Xorriso_findi_sorted(struct XorrisO *xorriso, struct FindjoB *job,
int filec, char **filev, int flag);
off_t boss_mem, int filec, char **filev, int flag);
/* @param flag bit0= do not mark image as changed */
int Xorriso_set_volid(struct XorrisO *xorriso, char *volid, int flag);
......@@ -304,6 +304,15 @@ int Xorriso_get_local_charset(struct XorrisO *xorriso, char **name, int flag);
int Xorriso_set_local_charset(struct XorrisO *xorriso, char *name, int flag);
int Xorriso_destroy_node_array(struct XorrisO *xorriso, int flag);
int Xorriso_new_node_array(struct XorrisO *xorriso, off_t mem_limit, int flag);
int Xorriso_sort_node_array(struct XorrisO *xorriso, int flag);
/* @param flag bit0= allocate xorriso->node_targets too
*/
int Xorriso_restore_node_array(struct XorrisO *xorriso, int flag);
struct CheckmediajoB {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment