FIZ(1) UNIX Programmer's Manual FIZ(1) NAME fiz - analyze damaged zoo archive for data revovery SYNOPSIS _f_i_z archive[.zoo] DESCRIPTION _F_i_z is used to analyze damaged _z_o_o archives and locate directory entries and file data in them. The current ver- sion of _f_i_z is 2.0 and it is meant to be used in conjunction with _z_o_o version 2.0. _F_i_z makes no assumptions about archive structure. Instead, it simply searches the entire subject archive for tag values that mark the locations of directory entries and file data. In a _z_o_o archive, a _d_i_r_e_c_- _t_o_r_y _e_n_t_r_y contains information about a stored file such as its name, whether compressed or not, and its timestamp. The _f_i_l_e _d_a_t_a are the actual data for the archived file, and may be either the original data, or the result of compressing the file. For each directory entry found, _f_i_z prints where in the archive it is located, the directory path and filename(s) found in it, whether the directory entry appears to be cor- rupted (indicated by [*CRC Error*]), and the value of the pointer to the file data that is found in the directory entry. For each block of file data found in the archive, _f_i_z prints where in the archive the block begins. In the case of an undamaged archive, the pointer to file data found in a directory entry will correspond to where _f_i_z actually locates the data. Here is some sample output from _f_i_z: **************** 2526: DIR [changes] ==> 95 2587: DATA **************** 3909: DIR [copyrite] ==> 1478 3970: DATA 4769: DATA **************** In such output, DIR indicates where _f_i_z found a directory entry in the archive, and DATA indicates where _f_i_z found file data in the archive. Filenames located by _f_i_z are enclosed in square brackets, and the notation "==> 95" indicates that the directory entry found by _f_i_z at position 2526 has a file data pointer to position 95. In actuality, _f_i_z found file data at positions 2587, 3970, and 4769. Since _f_i_z found only two directory entries, and each direc- tory entry corresponds to one file, one of the file data positions is an artifact. Once the locations of directory entries and file data are Printed 7/10/91 Jan 31, 1988 1 FIZ(1) UNIX Programmer's Manual FIZ(1) found, the @ modifier to _z_o_o'_s archive list and extract com- mands can be used and the archive contents selectively listed or extracted, skipping the damaged portion. This is further described in the documentation for _z_o_o(_1). In the above case, commands to try giving to _z_o_o might be x@2526,2587 (extract beginning at position 2526, and get file data from position 2587), x@3090,3970 (extract at 3090, get data from 3970) and x@3909,4769 (extract at 3909, get data from 4769). Once a correctly-matched directory entry/file data pair is found, _z_o_o will in most cases syn- chronize with and correctly extract all files subsequently found in the archive. Trial and error should allow all undamaged files to be extracted. Also note that self- extracting archives created using _s_e_z (the Self-Extracting _Z_o_o utility for MS-DOS), which are normally executed on an MS-DOS system for extraction, can be extracted on non-MSDOS systems in a similar way. SEE ALSO zoo(1) BUGS Random byte patterns can occasionally be incorrectly recog- nized as tag values. This occurs very rarely, however, and trial and error will usually permit all undamaged data to be extracted. DIAGNOSTICS _F_i_z always exits with a status code of 0. FUTURE DIRECTIONS Automation of data recovery from a damaged archive is poten- tially achievable. However, since damaged archives occur only rarely, _f_i_z as it currently stands is unlikely to change much in the near future. AUTHOR Rahul Dhesi Printed 7/10/91 Jan 31, 1988 2