fossilcons 19 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217
  1. .TH FOSSILCONS 8
  2. .SH NAME
  3. fossilcons \- fossil console commands
  4. .SH SYNOPSIS
  5. .B
  6. con /srv/fscons
  7. .PP
  8. .PD 0.1
  9. .B .
  10. .I file
  11. .PP
  12. .B 9p
  13. .I T-message
  14. ...
  15. .PP
  16. .B bind
  17. [
  18. .B -b|-a|-c|-bc|-ac
  19. ]
  20. .I new
  21. .I old
  22. .PP
  23. .B dflag
  24. .PP
  25. .B echo
  26. [
  27. .B -n
  28. ]
  29. [
  30. .I arg
  31. ...
  32. ]
  33. .PP
  34. .B listen
  35. [
  36. .B -INd
  37. ]
  38. [
  39. .I address
  40. ]
  41. .PP
  42. .B msg
  43. [
  44. .B -m
  45. .I nmsg
  46. ]
  47. [
  48. .B -p
  49. .I nproc
  50. ]
  51. .PP
  52. .B printconfig
  53. .PP
  54. .B srv
  55. [
  56. .B -APWdp
  57. ]
  58. .I name
  59. .PP
  60. .B uname
  61. .I name
  62. [
  63. .I id
  64. |
  65. .BI : id
  66. |
  67. .BI % newname
  68. |
  69. .BI = leader
  70. |
  71. .BI + member
  72. |
  73. .BI - member
  74. ]
  75. .PP
  76. .B users
  77. [
  78. .B -d
  79. |
  80. .B -r
  81. .I file
  82. ]
  83. [
  84. .B -w
  85. ]
  86. .PP
  87. .B who
  88. .sp
  89. .PP
  90. .B fsys
  91. .I name
  92. .PP
  93. .B fsys
  94. .I name
  95. .B config
  96. [
  97. .I device
  98. ]
  99. .PP
  100. .B fsys
  101. .I name
  102. .B venti
  103. [
  104. .I host
  105. ]
  106. .PP
  107. .B fsys
  108. .I name
  109. .B open
  110. [
  111. .B -APVWar
  112. ]
  113. [
  114. .B -c
  115. .I ncache
  116. ]
  117. .PP
  118. [
  119. .B fsys
  120. .I name
  121. ]
  122. .B close
  123. .PP
  124. .B fsys
  125. .I name
  126. .B unconfig
  127. .sp
  128. .PP
  129. [
  130. .B fsys
  131. .I name
  132. ]
  133. .B bfree
  134. .I addr
  135. .PP
  136. [
  137. .B fsys
  138. .I name
  139. ]
  140. .B block
  141. .I addr
  142. .I offset
  143. [
  144. .I count
  145. [
  146. .I data
  147. ]]
  148. .PP
  149. .in +1i
  150. .ti -1i
  151. [
  152. .B fsys
  153. .I name
  154. ]
  155. .B check
  156. [
  157. .B pblock
  158. ] [
  159. .B pdir
  160. ] [
  161. .B pfile
  162. ] [
  163. .B bclose
  164. ] [
  165. .B clri
  166. ] [
  167. .B clre
  168. ] [
  169. .B clrp
  170. ] [
  171. .B fix
  172. ] [
  173. .B venti
  174. ] [
  175. .B snapshot
  176. ]
  177. .PP
  178. [
  179. .B fsys
  180. .I name
  181. ]
  182. .B clre
  183. .I addr
  184. .I offsets
  185. \&...
  186. .PP
  187. [
  188. .B fsys
  189. .I name
  190. ]
  191. .B clri
  192. .I files
  193. \&...
  194. .PP
  195. [
  196. .B fsys
  197. .I name
  198. ]
  199. .B clrp
  200. .I addr
  201. .I offset
  202. \&...
  203. .PP
  204. [
  205. .B fsys
  206. .I name
  207. ]
  208. .B create
  209. .I path
  210. .I uid
  211. .I gid
  212. .I perm
  213. .PP
  214. [
  215. .B fsys
  216. .I name
  217. ]
  218. .B df
  219. .PP
  220. [
  221. .B fsys
  222. .I name
  223. ]
  224. .B epoch
  225. [[
  226. .B -ry
  227. ]
  228. .I n
  229. ]
  230. .PP
  231. [
  232. .B fsys
  233. .I name
  234. ]
  235. .B halt
  236. .PP
  237. [
  238. .B fsys
  239. .I name
  240. ]
  241. .B label
  242. .I addr
  243. [
  244. .I type
  245. .I state
  246. .I epoch
  247. .I epochclose
  248. .I tag
  249. ]
  250. .PP
  251. [
  252. .B fsys
  253. .I name
  254. ]
  255. .B remove
  256. .I files
  257. \&...
  258. .PP
  259. [
  260. .B fsys
  261. .I name
  262. ]
  263. .B snap
  264. [
  265. .B -a
  266. ]
  267. [
  268. .B -s
  269. .I src
  270. ]
  271. [
  272. .B -d
  273. .I dst
  274. ]
  275. .PP
  276. [
  277. .B fsys
  278. .I name
  279. ]
  280. .B snapclean
  281. [
  282. .I timeout
  283. ]
  284. .PP
  285. [
  286. .B fsys
  287. .I name
  288. ]
  289. .B snaptime
  290. [
  291. .B -a
  292. .I hhmm
  293. ]
  294. [
  295. .B -s
  296. .I interval
  297. ]
  298. [
  299. .B -t
  300. .I timeout
  301. ]
  302. .PP
  303. [
  304. .B fsys
  305. .I name
  306. ]
  307. .B stat
  308. .IR files ...
  309. .PP
  310. [
  311. .B fsys
  312. .I name
  313. ]
  314. .B sync
  315. .PP
  316. [
  317. .B fsys
  318. .I name
  319. ]
  320. .B unhalt
  321. .PP
  322. [
  323. .B fsys
  324. .I name
  325. ]
  326. .B vac
  327. .I dir
  328. .PP
  329. [
  330. .B fsys
  331. .I name
  332. ]
  333. .B wstat
  334. .I file
  335. .I elem
  336. .I uid
  337. .I gid
  338. .I perm
  339. .I length
  340. .SH DESCRIPTION
  341. These are configuration and maintenance commands
  342. executed at the console of a
  343. .IR fossil (4)
  344. file server.
  345. The commands are split into three groups above:
  346. file server configuration,
  347. file system configuration,
  348. and file system maintenance.
  349. This manual page is split in the same way.
  350. .SS File server configuration
  351. .PP
  352. The
  353. dot
  354. .RI ( . )
  355. command
  356. reads
  357. .IR file ,
  358. treating each line as a command to be executed.
  359. Blank lines and lines beginning with a
  360. .L #
  361. character are ignored.
  362. Errors during execution are printed but do not stop the script.
  363. Note that
  364. .I file
  365. is a file in the name space in which
  366. .I fossil
  367. was started,
  368. .I not
  369. a file in any file system served by
  370. .IR fossil .
  371. .PP
  372. .I 9p
  373. executes a 9P transaction; the arguments
  374. are in the same format used by
  375. .IR 9pcon (8).
  376. .PP
  377. .I Bind
  378. behaves similarly to
  379. .IR bind (1).
  380. It is useful when fossil
  381. is started without devices it needs configured
  382. into its namespace.
  383. .PP
  384. .I Dflag
  385. toggles the debug flag and prints the new setting.
  386. When the debug flag is set, all protocol messages
  387. and information about authentication is printed to
  388. standard error.
  389. .PP
  390. .I Echo
  391. behaves identically to
  392. .IR echo (1),
  393. writing to the console.
  394. .PP
  395. .I Listen
  396. manages the network addresses at which
  397. fossil is listening.
  398. With no arguments,
  399. .I listen
  400. prints the current list of addresses and their network directories.
  401. With one argument, listen
  402. .I address
  403. starts a new listener at
  404. .IR address ;
  405. the
  406. .B -d
  407. flag causes
  408. .I listen
  409. to remove the listener
  410. at the given address.
  411. By default, the user
  412. .I none
  413. is only allowed to attach on a connection after
  414. at least one other user has successfully attached.
  415. The
  416. .B -N
  417. flag allows connections from
  418. .I none
  419. at any time.
  420. The
  421. .B -I
  422. flag causes
  423. .I fossil
  424. to check the IP address of incoming connections
  425. against
  426. .BR /mnt/ipok ,
  427. rejecting attaches from disallowed addresses.
  428. This mechanism is not intended for general use.
  429. The server
  430. .I sources.cs.bell-labs.com
  431. uses it to comply with U.S. crytography
  432. export regulations.
  433. .PP
  434. .I Msg
  435. prints the maximum internal 9P message queue size
  436. and the maximum number of 9P processes to
  437. allocate for serving the queue.
  438. The
  439. .B -m
  440. and
  441. .B -p
  442. options set the two variables.
  443. .PP
  444. .I Printconfig
  445. prints the
  446. .B config
  447. line for each configured file system
  448. and prints the
  449. .B venti
  450. line, if any, used to configure this file server.
  451. .PP
  452. .I Srv
  453. behaves like listen but uses
  454. .BI /srv/ name
  455. rather than a network address.
  456. With the
  457. .B -p
  458. flag,
  459. .I srv
  460. edits a list of console services rather than 9P services.
  461. With no arguments,
  462. .I srv
  463. prints the current list of services.
  464. With one argument, srv
  465. .I name
  466. starts a new service at
  467. .IR /srv/name ;
  468. the
  469. .B -d
  470. flag causes
  471. .I srv
  472. to remove the named service.
  473. See the
  474. .I [fsys] open
  475. command below for a description of the
  476. .B -APW
  477. options.
  478. .PP
  479. .I Uname
  480. manipulates entries in the user table.
  481. There is no distinction between users and groups:
  482. a user is a group with one member.
  483. For each user, the user table records:
  484. .TF \fImembers
  485. .PD
  486. .TP
  487. .I id
  488. the string used to represent this user in the on-disk structures
  489. .TP
  490. .I name
  491. the string used to represent this user in the 9P protocol
  492. .TP
  493. .I leader
  494. the group's leader (see
  495. .IR stat (5)
  496. for a description of the special privileges held by a group leader)
  497. .TP
  498. .I members
  499. a comma-separated list of members in this group
  500. .PP
  501. The
  502. .I id
  503. and
  504. .I name
  505. are usually the same string, but need not be.
  506. Once an
  507. .I id
  508. is used in file system structures archived to Venti,
  509. it is impossible to change those disk structures,
  510. and thus impossible to rename the
  511. .IR id .
  512. The translation from
  513. .I name
  514. to
  515. .I id
  516. allows the appearance of renaming the user even
  517. though the on-disk structures still record the old name.
  518. (In a conventional Unix file system, the
  519. .I id
  520. is stored as a small integer rather than a string.)
  521. .I Leader
  522. and
  523. .I members
  524. are names, not ids.
  525. .PP
  526. The first argument to
  527. .I uname
  528. is the
  529. .I name
  530. of a user.
  531. The second argument is a verb, one of:
  532. .TF \fI%newname
  533. .PD
  534. .TP
  535. .I id
  536. create a user with name
  537. .RI ` name '
  538. and id
  539. .RI ` id ;'
  540. also create a home directory
  541. .BI /active/usr/ uname \fR
  542. .TP
  543. .BI : id
  544. create a user with name
  545. .RI ` name '
  546. and id
  547. .RI ` id ,'
  548. but do not create a home directory
  549. .TP
  550. .BI % newname
  551. rename user
  552. .RI ` name '
  553. to
  554. .RI ` newname ,'
  555. throughout the user table
  556. .TP
  557. .BI = leader
  558. set
  559. .IR name 's
  560. group leader
  561. to
  562. .IR leader .
  563. .TP
  564. .BI =
  565. remove
  566. .IR name 's
  567. group leader; then all members will be
  568. considered leaders
  569. .TP
  570. .BI + member
  571. add
  572. .I member
  573. to
  574. .IR name 's
  575. list of members
  576. .TP
  577. .BI - member
  578. remove
  579. .I member
  580. from
  581. .IR name 's
  582. list of members
  583. .LP
  584. If the verb is omitted, the entire entry for
  585. .I name
  586. is printed, in the form
  587. `\fIid\fL:\fIname\fL:\fIleader\fL:\fImembers\fR.'
  588. .LP
  589. The end of this manual page gives examples.
  590. .PP
  591. .I Users
  592. manipulates the user table.
  593. The user table is a list of lines in the form printed
  594. by the
  595. .I uname
  596. command.
  597. The
  598. .B -d
  599. flag resets the user table with the default:
  600. .IP
  601. .EX
  602. adm:adm:adm:sys
  603. none:none::
  604. noworld:noworld::
  605. sys:sys::
  606. glenda:glenda:glenda:
  607. .EE
  608. .PP
  609. Except
  610. .BR glenda ,
  611. these users are mandatory: they must appear in all user
  612. files and cannot be renamed.
  613. .PP
  614. The
  615. .B -r
  616. flag reads a user table from the named
  617. .I file
  618. in file system
  619. .BR main .
  620. The
  621. .B -w
  622. flag writes the table to
  623. .B /active/adm/users
  624. on the file system
  625. .BR main .
  626. .B /active/adm
  627. and
  628. .B /active/adm/users
  629. will be created if they do not exist.
  630. .PP
  631. .I Users
  632. .B -r
  633. .B /active/adm/users
  634. is automatically executed when the file system
  635. .B main
  636. is opened.
  637. .PP
  638. .I Users
  639. .B -w
  640. is automatically executed after each change to the user
  641. table by the
  642. .I uname
  643. command.
  644. .PP
  645. .I Who
  646. prints a list of users attached to each active connection.
  647. .SS File system configuration
  648. .I Fsys
  649. sets the current file system to
  650. .IR name ,
  651. which must be configured and open (q.v.).
  652. The current file system name is
  653. displayed as the file server prompt.
  654. The special name
  655. .B all
  656. stands for all file systems;
  657. commands applied to
  658. .B all
  659. are applied to each file system in turn.
  660. The commands
  661. .BR config ,
  662. .BR open ,
  663. .BR venti ,
  664. and
  665. .B close
  666. cannot be applied to
  667. .BR all .
  668. .PP
  669. .I Fsys
  670. takes as an optional argument
  671. (after
  672. .BR name )
  673. a command to execute on the named file system.
  674. Most commands require that the named file system
  675. be configured and open; these commands can be invoked
  676. without the
  677. .BI fsys " name
  678. prefix, in which case the current file system is used.
  679. A few commands
  680. .RB ( config ,
  681. .BR open ,
  682. and
  683. .BR unconfig )
  684. operate on unopened file systems; they require the prefix.
  685. .PP
  686. .I Config
  687. creates a new file system named
  688. .I name
  689. using disk file
  690. .IR device .
  691. This just adds an entry to fossil's internal table.
  692. If
  693. .I device
  694. is missing,
  695. the
  696. .I file
  697. argument to
  698. .IR fossil 's
  699. .B -f
  700. option will be used instead;
  701. this allows the
  702. .I fossil
  703. configuration file to avoid naming the partition that it is embedded in,
  704. making it more portable.
  705. .PP
  706. .I Venti
  707. establishes a connection to the Venti server
  708. .I host
  709. (by default, the environment variable
  710. .B $venti
  711. or the network variable
  712. .BR $venti )
  713. for use by the named file system.
  714. If no
  715. .I venti
  716. command is issued before
  717. .IR open ,
  718. the default Venti server will be used.
  719. If the file system is open,
  720. and was not opened with the
  721. .B -V
  722. flag,
  723. the command redials the Venti server.
  724. This can be used to reestablish broken connections.
  725. It is not a good idea to use the command to switch
  726. between Venti servers, since Fossil does not keep track
  727. of which blocks are stored on which servers.
  728. .PP
  729. .I Open
  730. opens the file system, reading the
  731. root and super blocks and allocating an in-memory
  732. cache for disk and Venti blocks.
  733. The options are:
  734. .TF "-c\fI ncache
  735. .PD
  736. .TP
  737. .B -A
  738. run with no authentication
  739. .TP
  740. .B -P
  741. run with no permission checking
  742. .TP
  743. .B -V
  744. do not attempt to connect to a Venti server
  745. .TP
  746. .B -W
  747. allow wstat to make arbitrary changes to the user and group fields
  748. .TP
  749. .B -a
  750. do not update file access times;
  751. primarily to avoid wear on flash memories
  752. .TP
  753. .B -r
  754. open the file system read-only
  755. .TP
  756. .BI -c " ncache
  757. allocate an in-memory cache of
  758. .I ncache
  759. (by default, 1000)
  760. blocks
  761. .PP
  762. The
  763. .I -APW
  764. settings can be overridden on a per-connection basis
  765. by the
  766. .I srv
  767. command above.
  768. .PP
  769. .I Close
  770. flushes all dirty file system blocks to disk
  771. and then closes the device file.
  772. .PP
  773. .I Unconfig
  774. removes the named file system (which must be closed)
  775. from fossil's internal table.
  776. .br
  777. .ne 3
  778. .SS File system maintenance
  779. .I Bfree
  780. marks the block at disk address
  781. .I addr
  782. as available for allocation.
  783. Before doing so, it prints a
  784. .I label
  785. command (q.v.)
  786. that can be used to restore the block to its previous state.
  787. .PP
  788. .I Block
  789. displays (in hexadecimal)
  790. the contents of the block at disk address
  791. .IR addr ,
  792. starting at
  793. .I offset
  794. and continuing for
  795. .I count
  796. bytes or until the end of the block.
  797. If
  798. .I data
  799. (also hexadecimal)
  800. is given, the contents in that range are
  801. replaced with data.
  802. When writing to a block,
  803. .I block
  804. prints the old and new contents,
  805. so that the change is easily undone.
  806. Editing blocks is discouraged.
  807. .PP
  808. .I Clre
  809. zeros an entry from a disk block.
  810. Before doing so, it prints a
  811. .I block
  812. command that can be used
  813. to restore the entry.
  814. .PP
  815. .I Clri
  816. removes the internal directory entry
  817. and abandons storage associated with
  818. .IR files .
  819. It ignores the usual rules for sanity, such as checking against
  820. removing a non-empty directory.
  821. A subsequent
  822. .I flchk
  823. (see
  824. .IR fossil (4))
  825. will identify the abandoned storage so it can be reclaimed with
  826. .I bfree
  827. commands.
  828. .PP
  829. .I Clrp
  830. zeros a pointer in a disk block.
  831. Before doing so, it prints a
  832. .I block
  833. command that can be used to restore the entry.
  834. .PP
  835. .I Check
  836. checks the file system for various inconsistencies.
  837. If the file system is not already halted, it is halted for
  838. the duration of the check.
  839. If the archiver is currently sending a snapshot to Venti,
  840. the check will refuse to run; the only recourse is to wait
  841. for the archiver to finish.
  842. .PP
  843. A list of keyword options control the check.
  844. The
  845. .BR pblock ,
  846. .BR pdir ,
  847. and
  848. .B pfile
  849. options cause
  850. .I check
  851. to print the name of each block, directory, or file encountered.
  852. .PP
  853. By default,
  854. .I check
  855. reports errors but does not fix them.
  856. The
  857. .BR bclose ,
  858. .BR clri ,
  859. .BR clre ,
  860. and
  861. .B clrp
  862. options specify correcting actions that may be taken:
  863. closing leaked blocks, clearing bad file directory entries,
  864. clearing bad pointers, and clearing bad entries.
  865. The
  866. .B fix
  867. option enables all of these; it is equivalent to
  868. .B bclose
  869. .B clri
  870. .B clre
  871. .BR clrp .
  872. .PP
  873. By default,
  874. .I check
  875. scans the portion of the active file system held in the write buffer,
  876. avoiding blocks stored on Venti or used only in snapshots.
  877. The
  878. .B venti
  879. option causes
  880. .I check
  881. to scan the portion of the file system stored on Venti,
  882. and the
  883. .B snapshot
  884. option causes
  885. .I check
  886. to scan old snapshots.
  887. Specifying
  888. .B snapshot
  889. causes
  890. .I check
  891. to take a long time;
  892. specifying
  893. .B venti
  894. or
  895. (worse)
  896. .B venti
  897. .B snapshot
  898. causes
  899. .I check
  900. to take a very long time.
  901. .PP
  902. .I Create
  903. creates a file on the current file system.
  904. .I Uid
  905. and
  906. .I gid
  907. are uids
  908. .RI ( not
  909. unames;
  910. see the discussion above, in the description
  911. of the
  912. .I uname
  913. command).
  914. .I Perm
  915. is the low 9 bits of the permission mode of the file,
  916. in octal.
  917. The
  918. .BR a ,
  919. .BR d ,
  920. and
  921. .B l
  922. mode prefixes
  923. set the append-only, directory, and lock bits.
  924. The
  925. .I perm
  926. is formatted as described in the
  927. .I stat
  928. command;
  929. creating files or directories with the
  930. .BR snapshot (s)
  931. bit set is not allowed.
  932. .PP
  933. .I Df
  934. prints the amount of used disk space in the write buffer.
  935. .PP
  936. .I Epoch
  937. sets the low file system epoch.
  938. Snapshots in the file system are given increasing epoch numbers.
  939. The file system maintains a low and a high epoch number,
  940. and only allows access to snapshots in that range.
  941. The low epoch number can be moved forward to discard old snapshots
  942. and reclaim the disk space they occupy.
  943. (The high epoch number is always the epoch of the currently
  944. active file system.)
  945. .PP
  946. With no argument
  947. .I epoch
  948. reports the current low and high epoch numbers.
  949. The command
  950. ``\fLepoch\fI n''\fR
  951. is used to propose changing the low epoch to
  952. .IR n .
  953. In response,
  954. .I fossil
  955. scans
  956. .B /archive
  957. and
  958. .B /snapshot
  959. for snapshots that would be discarded, printing their
  960. epoch numbers and the
  961. .I clri
  962. commands necessary to remove them.
  963. The epoch is changed only if no such paths are found.
  964. The usual sequence of commands is (1) run epoch to
  965. print the snapshots and their epochs, (2) clri some snapshots,
  966. (3) run epoch again.
  967. If the file system is completely full (there are no free blocks),
  968. .I clri
  969. may fail because it needs to allocate blocks.
  970. For this situation,
  971. the
  972. .B -y
  973. flag to epoch forces the epoch change even when
  974. it means discarding currently accessible snapshots.
  975. Note that when there are still snapshots in
  976. .BR /archive ,
  977. the archiver should take care
  978. of those snapshots (moving the blocks from disk to Venti)
  979. if you give it more time.
  980. .PP
  981. The
  982. .B -r
  983. flag to epoch causes it to remove any now-inaccessible
  984. snapshot directories once it has changed the epoch.
  985. This flag only makes sense in conjunction with the
  986. .B -y
  987. flag.
  988. .PP
  989. .I Epoch
  990. is a very low-level way to retire snapshots.
  991. The preferred way is by setting an automatic timer
  992. with
  993. .IR snaptime .
  994. .PP
  995. .I Halt
  996. suspends all file system activity;
  997. .I unhalt
  998. resumes activity.
  999. .PP
  1000. .I Label
  1001. displays and edits the label associated with a block.
  1002. When editing, a parameter of
  1003. .B -
  1004. means leave that field unchanged.
  1005. Editing labels is discouraged.
  1006. .PP
  1007. .I Remove
  1008. removes
  1009. .IR files .
  1010. .PP
  1011. .I Snap
  1012. takes a temporary snapshot of the current file system,
  1013. recording it in
  1014. .BI /snapshot/ yyyy / mmdd / hhmm \fR,
  1015. as described in
  1016. .IR fossil (4).
  1017. The
  1018. .B -a
  1019. flag causes
  1020. .I snap
  1021. to take an archival snapshot, recording it in
  1022. .BI /archive/ yyyy / mmdd \fR,
  1023. also described in
  1024. .IR fossil (4).
  1025. By default the snapshot is taken of
  1026. .BR /active ,
  1027. the root of the active file system.
  1028. The
  1029. .B -s
  1030. flag specifies a different source path.
  1031. The
  1032. .B -d
  1033. flag specifies a different destination path.
  1034. These two flags are useful together for moving snapshots into
  1035. the archive tree.
  1036. .PP
  1037. .I Snapclean
  1038. immediately discards all snapshots that are more than
  1039. .I timeout
  1040. minutes old.
  1041. The default timeout is the one set by the
  1042. .I snaptime
  1043. command.
  1044. The discarding is a one-time event rather than
  1045. a recurring event as in
  1046. .IR snaptime .
  1047. .PP
  1048. .I Snaptime
  1049. displays and edits the times at which snapshots are automatically
  1050. taken.
  1051. An archival snapshot is taken once a day, at
  1052. .IR hhmm ,
  1053. while temporary snapshots are taken at multiples of
  1054. .I interval
  1055. minutes.
  1056. Temporary snapshots are discarded after they are
  1057. .I timeout
  1058. minutes old.
  1059. The snapshot cleanup runs every
  1060. .I timeout
  1061. minutes or once a day, whichever is more frequent,
  1062. so snapshots may grow to an age of almost twice the timeout
  1063. before actually being discarded.
  1064. With no arguments,
  1065. .I snaptime
  1066. prints the current snapshot times.
  1067. The
  1068. .B -a
  1069. and
  1070. .B -s
  1071. options set the archive and snapshot times.
  1072. An
  1073. .I hhmm
  1074. or
  1075. .I interval
  1076. of
  1077. .L none
  1078. can be used to disable that kind of automatic snapshot.
  1079. The
  1080. .B -t
  1081. option sets the snapshot timeout.
  1082. If
  1083. .I timeout
  1084. is
  1085. .LR none ,
  1086. temporary snapshots are not automatically discarded.
  1087. By default, all three times are set to
  1088. .LR none .
  1089. .PP
  1090. .I Stat
  1091. displays metadata for each of the named
  1092. .IR files ,
  1093. in the form:
  1094. .IP
  1095. .EX
  1096. stat \fIfile elem uid gid perm length
  1097. .EE
  1098. .LP
  1099. (Replacing
  1100. .B stat
  1101. with
  1102. .B wstat
  1103. yields a valid command.)
  1104. The
  1105. .I perm
  1106. is an octal number less than or equal to 777,
  1107. prefixed with any of the following letters
  1108. to indicate additional bits.
  1109. .IP
  1110. .EX
  1111. .ta +4n
  1112. a \fRappend only
  1113. d \fRdirectory
  1114. l \fRexclusive use
  1115. s \fRis the root of a snapshot
  1116. t \fRtemporary bit
  1117. A \fRMS-DOS archive bit
  1118. G \fRsetgid
  1119. H \fRMS-DOS hidden bit
  1120. L \fRsymbolic link
  1121. S \fRMS-DOS system bit
  1122. U \fRsetuid
  1123. Y \fRsticky
  1124. .EE
  1125. .PP
  1126. The bits denoted by capital letters are included
  1127. to support non-Plan 9 systems.
  1128. They are not made visible by the 9P protocol.
  1129. .PP
  1130. .I Sync
  1131. writes dirty blocks in memory to the disk.
  1132. .PP
  1133. .I Vac
  1134. prints the Venti score for a
  1135. .IR vac (1)
  1136. archive containing the tree rooted
  1137. at
  1138. .IR dir ,
  1139. which must already be archived to Venti
  1140. (typically
  1141. .IR dir
  1142. is a directory in the
  1143. .B /archive
  1144. tree).
  1145. .PP
  1146. .I Wstat
  1147. changes the metadata of the named
  1148. .IR file .
  1149. Specifying
  1150. .B -
  1151. for any of the fields means ``don't change.''
  1152. Attempts to change the
  1153. .B d
  1154. or
  1155. .B s
  1156. bits in the
  1157. .I perm
  1158. are silently ignored.
  1159. .SH EXAMPLES
  1160. .IR Sources ,
  1161. the Plan 9 distribution file server,
  1162. uses the following configuration file:
  1163. .IP
  1164. .EX
  1165. srv -p fscons.sources
  1166. srv -p fscons.sources.adduserd
  1167. srv sources
  1168. fsys main config /dev/sdC0/fossil.outside
  1169. fsys main open -c 25600
  1170. fsys main
  1171. users /active/adm/users
  1172. listen tcp!*!564
  1173. msg -m 40 -p 10
  1174. snaptime -a 0000 -s 15
  1175. .EE
  1176. .LP
  1177. The second console is used by the daemon
  1178. that creates new accounts.
  1179. .PP
  1180. To add a new user with
  1181. .I name
  1182. and
  1183. .I id
  1184. .B rob
  1185. and create his home directory:
  1186. .IP
  1187. .EX
  1188. uname rob rob
  1189. .EE
  1190. .PP
  1191. To create a new group
  1192. .B sys
  1193. (with no home directory)
  1194. and add
  1195. .B rob
  1196. to it:
  1197. .IP
  1198. .EX
  1199. uname sys :sys
  1200. uname sys +rob
  1201. .EE
  1202. .PP
  1203. To save an old (but not yet discarded) snapshot into the archive tree:
  1204. .IP
  1205. .EX
  1206. snap -a -s /snapshot/2003/1220/0700 -d /archive/2003/1220
  1207. .EE
  1208. .SH BUGS
  1209. It is prudent to avoid taking a snapshot at the same time as an
  1210. archival dump.
  1211. .I Fossil
  1212. has been seen to sometimes hang when they collide.
  1213. Snapshots are taken when
  1214. .BI time(0)/60% interval
  1215. is zero, so
  1216. an interval of 60 will take snapshots on the hour.
  1217. It's easiest to schedule the archival dumps to happen not exactly on the hour.