|
|
1.1 ! root 1: .TH WORM 8 "wild" ! 2: .CT 1 sa_nonmortals ! 3: .SH NAME ! 4: worm, jukebox \- optical disk utilities ! 5: .SH SYNOPSIS ! 6: .B "worm mkfs" ! 7: [ ! 8: .BI -f device ! 9: ] [ ! 10: .BI -c comments ! 11: ] [ ! 12: .BI -b blksz ! 13: ] [ ! 14: .BI -n nblks ! 15: ] [ ! 16: .BI -v newvol_id ! 17: ] ! 18: .I vol_id ! 19: .PP ! 20: .B "worm stat" ! 21: [ ! 22: .BI -f device ! 23: ] [ ! 24: .BI -F n ! 25: ] [ ! 26: .B -v ! 27: ] [ ! 28: .I vol_id ! 29: ] ! 30: .PP ! 31: .B "worm ls" ! 32: [ ! 33: .BI -f device ! 34: ] [ ! 35: .B -l ! 36: ] [ ! 37: .I file ... ! 38: ] ! 39: .PP ! 40: .B "worm rm" ! 41: [ ! 42: .BI -f device ! 43: ] ! 44: .I vol_id ! 45: [ ! 46: .I file ... ! 47: ] ! 48: .PP ! 49: .B "worm mv" ! 50: [ ! 51: .BI -f device ! 52: ] ! 53: .I vol_id ! 54: .I "src dest" ! 55: .PP ! 56: .B "worm write" ! 57: [ ! 58: .BI -f device ! 59: ] ! 60: .I vol_id ! 61: [ ! 62: .I file ... ! 63: ] ! 64: .PP ! 65: .B "worm read" ! 66: [ ! 67: .BI -f device ! 68: ] [ ! 69: .B -d ! 70: ] ! 71: .I vol_id ! 72: [ ! 73: .I file ... ! 74: ] ! 75: .PP ! 76: .B "worm cat" ! 77: [ ! 78: .BI -f device ! 79: ] ! 80: .I vol_id ! 81: .I file ! 82: .PP ! 83: .B "worm offline" ! 84: [ ! 85: .BI -f device ! 86: ] ! 87: .PP ! 88: .B "worm btree" ! 89: [ ! 90: .BI -f device ! 91: ] ! 92: .I vol_id ! 93: .PP ! 94: .B "worm dir" ! 95: [ ! 96: .BI -f device ! 97: ] ! 98: .I vol_id ! 99: .PP ! 100: .B "worm tmpdir" ! 101: [ ! 102: .BI -f device ! 103: ] ! 104: .I vol_id ! 105: .PP ! 106: .B "worm mount" ! 107: [ ! 108: .BI -w secs ! 109: ] [ ! 110: .I vol_id ! 111: ] ! 112: .PP ! 113: .B "jukebox" ! 114: [ ! 115: .B -aemprsuU ! 116: ] [ ! 117: .BI -w secs ! 118: ] [ ! 119: .I vol_id ! 120: ] ! 121: .SH DESCRIPTION ! 122: The ! 123: .I worm ! 124: programs manipulate arbitrary files. ! 125: They are intended for use with the raw device associated ! 126: with a Write-Once Read-Many (WORM) optical disk. ! 127: The default device is ! 128: .FR /dev/worm0 . ! 129: Other devices are specified by ! 130: .BI -f device ! 131: and a device name of a single digit ! 132: .I n ! 133: is taken as an abbreviation for ! 134: .FR /dev/worm \f2n\fP. ! 135: Most of the commands implement a simple file system. ! 136: Programs just wanting a raw device should still use ! 137: .B "worm mkfs" ! 138: so that the disk is properly labeled. ! 139: The ! 140: .IR vol_id , ! 141: or label, ! 142: should be unique and by convention, the vol_id's ! 143: for the A and B sides of a disk should be the same string suffixed by ! 144: a lowercase ! 145: .B a ! 146: and ! 147: .B b ! 148: respectively. ! 149: .PP ! 150: .I "Worm mkfs" ! 151: labels an optical disk. ! 152: The ! 153: .I comments ! 154: field is limited to 256 chars. ! 155: It is purely descriptive and is printed by ! 156: .IR "worm stat \-v" . ! 157: The (default) blocksize is 1024 for our SONY disks. ! 158: The number of blocks on a disk can be found by ! 159: .IR ra (4) ! 160: or ! 161: .IR scsish (8); ! 162: the default size ! 163: (1,600,000 for single density, 3,250,000 for double density) ! 164: sets aside 30MB or so as a hedge against oversights. ! 165: If the disk has already been initialised, its vol_id must match ! 166: .IR vol_id . ! 167: A new vol_id can be set with ! 168: .BR -v . ! 169: .PP ! 170: .I "Worm stat" ! 171: prints out labeling information ! 172: including the amount of free space left on the disk. ! 173: Option ! 174: .I vol_id ! 175: turns off all output except exit status: zero if ! 176: .I vol_id ! 177: matches that of the disk, ! 178: one otherwise. ! 179: Option ! 180: .B -F ! 181: similarly exits with status zero if the disk has more than ! 182: .I n ! 183: free blocks, otherwise three. ! 184: Option ! 185: .B -v ! 186: produces more output. ! 187: .PP ! 188: .I "Worm ls" ! 189: simulates an emasculated ! 190: .IR ls (1). ! 191: .PP ! 192: .I "Worm rm" ! 193: makes the specifed files unavailable to the rest of the ! 194: .I worm ! 195: commands. ! 196: .PP ! 197: .I "Worm mv" ! 198: renames ! 199: .I src ! 200: to ! 201: .IR dest . ! 202: .PP ! 203: .I "Worm write" ! 204: copies files onto the WORM. ! 205: If no file arguments are given, ! 206: filenames are read one per line from standard input. ! 207: The total number of files and bytes is printed on standard output. ! 208: .PP ! 209: .I "Worm read" ! 210: restores files from the WORM. ! 211: If no file arguments are given, ! 212: filenames are read one per line from standard input. ! 213: Option ! 214: .B -d ! 215: causes directories to be created as needed. ! 216: .PP ! 217: .I "Worm cat" ! 218: copies the named file from the WORM to the standard output. ! 219: .PP ! 220: .I "Worm offline" ! 221: makes the WORM go offline, ready for ejecting. ! 222: This command is harmless; ! 223: accessing an offline drive will cause it to spin up and go online ! 224: without operator intervention. ! 225: .I "Worm offline" ! 226: only takes effect after the last close of the WORM ! 227: and as a bonus, applies to any MSCP device such as an RA81. ! 228: .PP ! 229: .I "Worm tmpdir" ! 230: saves a copy of the directory in ! 231: .BI /usr/worm/tmp/ vol_id ! 232: if the directory ! 233: .F /usr/worm/tmp ! 234: exists. ! 235: This will speed up subsequent access substantially, ! 236: although it will still be slower than ! 237: .I "worm btree" ! 238: below. ! 239: On the other hand, ! 240: .I worm tmpdir ! 241: typically takes 5 minutes to run (on a VAX 11/750) ! 242: whereas ! 243: .I worm btree ! 244: takes about 45 minutes. ! 245: .PP ! 246: .I "Worm btree" ! 247: constructs a new directory for the whole disk (in the form of a ! 248: .IR cbt (1) ! 249: database). ! 250: The new superblock is at zero. ! 251: All the worm commands go faster with such an index but it is intended to be done ! 252: just once, after the disk is complete. ! 253: The directory occupies of the order of 10MB but may be more. ! 254: If you really have to add more files to the disk, ! 255: you need to write zeros on the first 1K block of the WORM before using ! 256: .IR "worm write" . ! 257: .PP ! 258: .I "Worm dir" ! 259: takes the btree directory from the disk and stores in ! 260: .FR /usr/worm/dirs . ! 261: Future uses of the disk will be much faster. ! 262: .PP ! 263: .I "Worm mount" ! 264: returns the device on which the disk labelled ! 265: .I vol_id ! 266: is mounted. ! 267: If the drive(s) are busy and you have a jukebox, the ! 268: .BI -w s ! 269: option tells how many seconds to wait before failing. ! 270: The default is wait forever. ! 271: If no ! 272: .I vol_id ! 273: is given, print the drive status. ! 274: .PP ! 275: .I "Jukebox" ! 276: manages the disks in the SONY jukebox. ! 277: There are several options (default is ! 278: .BR -s ): ! 279: .TP 10 ! 280: .B -a ! 281: Allocate a blank disk and label it ! 282: .IR vol_id . ! 283: Use ! 284: .I "worm mkfs" ! 285: to change any fields from their default value. ! 286: .TP ! 287: .B -e ! 288: Eject the disk labeled ! 289: .I vol_id. ! 290: To physically retrieve the disk, ! 291: press the ! 292: .B OUT ! 293: button (the ! 294: .B "OUT READY" ! 295: light should be on). ! 296: Repeat until the ! 297: .B "IN READY" ! 298: light goes on. ! 299: .TP ! 300: .B -m ! 301: Mount the disk labelled ! 302: .I vol_id ! 303: in some drive and print the drive number on standard output. ! 304: .TP ! 305: .B -p ! 306: Print the list of disks in the jukebox. ! 307: .TP ! 308: .B -r ! 309: Rebuild the list of disks by examining each disk in the jukebox. ! 310: Do not do this unless you are sure you need to. ! 311: If ! 312: .I vol_id ! 313: is given, it should be one of the following letters and governs ! 314: how disks are assigned shelf numbers. ! 315: The default is to leave the shelf number unchanged. ! 316: Other options (mainly useful for demos) are ! 317: .B c ! 318: (compresses the disks in the jukebox towards the bottom or lower numbered shelves), ! 319: .B r ! 320: (distributes the disks randomly), and ! 321: .B s ! 322: (sorts the disks by vol_id). ! 323: .TP ! 324: .B -s ! 325: Print the status of the jukebox. ! 326: .TP ! 327: .B -u ! 328: Unload offline disks back onto their shelves. ! 329: .TP ! 330: .B -U ! 331: Unload all disks (offline or not) back onto their shelves. ! 332: .TP ! 333: .BI -w secs ! 334: This option only affects the behavior of ! 335: .BR -m . ! 336: If all drives are busy, try again for ! 337: .I secs ! 338: seconds before failing. ! 339: .PP ! 340: To load a disk into the jukebox, press the ! 341: .B IN ! 342: button on the jukebox when the ! 343: .B "IN READY" ! 344: light is on. ! 345: After the shutter opens, push the disk in firmly. ! 346: The disk (blank or initialised) is not examined immediately but on demand. ! 347: .SS Etiquette ! 348: Vol_ids should be unique as discussed above. ! 349: The file ! 350: .F /n/wild/usr/worm/vol_ids ! 351: contains known vol_ids. ! 352: The commands for reading and writing require vol_id's ! 353: to guard against accessing the wrong disk. ! 354: .PP ! 355: The recommended protocol for changing disks is ! 356: if no one appears to be using the drive ! 357: (by using ! 358: .IR ps (1)), ! 359: execute ! 360: .I "worm offline" ! 361: and go to the drive. ! 362: If, and only if, the drive has the DRIVE OFF (middle) light on, ! 363: hit the EJECT button and change disks. ! 364: If the light is not on, then ! 365: someone is still using the disk and you should wait until they are done ! 366: before hitting EJECT. ! 367: .SS Programming considerations ! 368: Programs should not depend on writing any block more than once; however, ! 369: our SONY optical disks implement a small number of multiple writes ! 370: via bad block replacement. ! 371: A ! 372: .IR read (2) ! 373: of an unwritten block returns with an errno of ! 374: .BR ENXIO . ! 375: On Vaxes, the WORM is an MSCP device; ! 376: thus geometry information can be fetched as in ! 377: .IR ra (4). ! 378: .PP ! 379: For maximum speed, read and write in large blocks (preferably 63K) ! 380: and avoid seeks. ! 381: A seek across the whole disk takes about 1 second. ! 382: .PP ! 383: The device ! 384: .F /dev/worm? ! 385: is simply an appropriate raw ! 386: .IR ra (4) ! 387: device, partition 7 (the whole disk). ! 388: .SH EXAMPLES ! 389: .EX ! 390: worm mkfs -c"512x512x24 movies" tdmoviesa ! 391: worm write tdmoviesa < filenames ! 392: worm read -d tdmoviesa bumblebee/act2/frame1 ! 393: .EE ! 394: .SH FILES ! 395: .F /dev/worm? ! 396: .br ! 397: .F /n/wild/usr/worm/vol_ids ! 398: .br ! 399: .F /n/wild/usr/worm/jukedir ! 400: .SH SEE ALSO ! 401: .IR backup (8), ! 402: .IR scsish (8), ! 403: .IR backup (1) ! 404: .SH BUGS ! 405: The output of ! 406: .I "worm ls" ! 407: is not necessarily sorted.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.