\select@language {english}
\contentsline {chapter}{\numberline {1}About S3QL}{1}{chapter.1}
\contentsline {section}{\numberline {1.1}Features}{1}{section.1.1}
\contentsline {section}{\numberline {1.2}Development Status}{2}{section.1.2}
\contentsline {section}{\numberline {1.3}Supported Platforms}{2}{section.1.3}
\contentsline {section}{\numberline {1.4}Contributing}{2}{section.1.4}
\contentsline {chapter}{\numberline {2}Installation}{3}{chapter.2}
\contentsline {section}{\numberline {2.1}Dependencies}{3}{section.2.1}
\contentsline {section}{\numberline {2.2}Installing S3QL}{4}{section.2.2}
\contentsline {section}{\numberline {2.3}Development Version}{4}{section.2.3}
\contentsline {section}{\numberline {2.4}Running tests requiring remote servers}{4}{section.2.4}
\contentsline {chapter}{\numberline {3}Storage Backends}{7}{chapter.3}
\contentsline {section}{\numberline {3.1}Google Storage}{7}{section.3.1}
\contentsline {section}{\numberline {3.2}Amazon S3}{8}{section.3.2}
\contentsline {section}{\numberline {3.3}OpenStack/Swift}{9}{section.3.3}
\contentsline {section}{\numberline {3.4}Rackspace CloudFiles}{9}{section.3.4}
\contentsline {section}{\numberline {3.5}S3 compatible}{10}{section.3.5}
\contentsline {section}{\numberline {3.6}Local}{10}{section.3.6}
\contentsline {chapter}{\numberline {4}Important Rules to Avoid Losing Data}{13}{chapter.4}
\contentsline {section}{\numberline {4.1}Rules in a Nutshell}{13}{section.4.1}
\contentsline {section}{\numberline {4.2}Consistency Window List}{14}{section.4.2}
\contentsline {section}{\numberline {4.3}Data Consistency}{14}{section.4.3}
\contentsline {section}{\numberline {4.4}Data Durability}{15}{section.4.4}
\contentsline {chapter}{\numberline {5}File System Creation}{17}{chapter.5}
\contentsline {chapter}{\numberline {6}Managing File Systems}{19}{chapter.6}
\contentsline {section}{\numberline {6.1}Changing the Passphrase}{19}{section.6.1}
\contentsline {section}{\numberline {6.2}Upgrading the file system}{20}{section.6.2}
\contentsline {section}{\numberline {6.3}Deleting a file system}{20}{section.6.3}
\contentsline {section}{\numberline {6.4}Restoring Metadata Backups}{20}{section.6.4}
\contentsline {chapter}{\numberline {7}Mounting}{21}{chapter.7}
\contentsline {section}{\numberline {7.1}Permission Checking}{22}{section.7.1}
\contentsline {section}{\numberline {7.2}Compression Algorithms}{22}{section.7.2}
\contentsline {section}{\numberline {7.3}Notes about Caching}{22}{section.7.3}
\contentsline {subsection}{\numberline {7.3.1}Maximum Number of Cache Entries}{23}{subsection.7.3.1}
\contentsline {subsection}{\numberline {7.3.2}Cache Flushing and Expiration}{23}{subsection.7.3.2}
\contentsline {section}{\numberline {7.4}Failure Modes}{23}{section.7.4}
\contentsline {section}{\numberline {7.5}Automatic Mounting}{23}{section.7.5}
\contentsline {chapter}{\numberline {8}Advanced S3QL Features}{25}{chapter.8}
\contentsline {section}{\numberline {8.1}Snapshotting and Copy-on-Write}{25}{section.8.1}
\contentsline {subsection}{\numberline {8.1.1}Snapshotting vs Hardlinking}{25}{subsection.8.1.1}
\contentsline {section}{\numberline {8.2}Getting Statistics}{26}{section.8.2}
\contentsline {section}{\numberline {8.3}Immutable Trees}{26}{section.8.3}
\contentsline {section}{\numberline {8.4}Fast Recursive Removal}{27}{section.8.4}
\contentsline {section}{\numberline {8.5}Runtime Configuration}{27}{section.8.5}
\contentsline {chapter}{\numberline {9}Unmounting}{29}{chapter.9}
\contentsline {chapter}{\numberline {10}Checking for Errors}{31}{chapter.10}
\contentsline {section}{\numberline {10.1}Checking and repairing internal file system errors}{31}{section.10.1}
\contentsline {section}{\numberline {10.2}Detecting and handling backend data corruption}{32}{section.10.2}
\contentsline {chapter}{\numberline {11}Storing Authentication Information}{33}{chapter.11}
\contentsline {chapter}{\numberline {12}Contributed Programs}{35}{chapter.12}
\contentsline {section}{\numberline {12.1}benchmark.py}{35}{section.12.1}
\contentsline {section}{\numberline {12.2}clone\_fs.py}{35}{section.12.2}
\contentsline {section}{\numberline {12.3}pcp.py}{35}{section.12.3}
\contentsline {section}{\numberline {12.4}s3ql\_backup.sh}{35}{section.12.4}
\contentsline {section}{\numberline {12.5}expire\_backups.py}{36}{section.12.5}
\contentsline {section}{\numberline {12.6}remove\_objects.py}{37}{section.12.6}
\contentsline {chapter}{\numberline {13}Tips \& Tricks}{39}{chapter.13}
\contentsline {section}{\numberline {13.1}SSH Backend}{39}{section.13.1}
\contentsline {section}{\numberline {13.2}Permanently mounted backup file system}{39}{section.13.2}
\contentsline {section}{\numberline {13.3}Improving copy performance}{39}{section.13.3}
\contentsline {chapter}{\numberline {14}Known Issues}{41}{chapter.14}
\contentsline {chapter}{\numberline {15}Manpages}{43}{chapter.15}
\contentsline {section}{\numberline {15.1}The \textbf {mkfs.s3ql} command}{43}{section.15.1}
\contentsline {subsection}{\numberline {15.1.1}Synopsis}{43}{subsection.15.1.1}
\contentsline {subsection}{\numberline {15.1.2}Description}{43}{subsection.15.1.2}
\contentsline {subsection}{\numberline {15.1.3}Options}{43}{subsection.15.1.3}
\contentsline {subsection}{\numberline {15.1.4}Exit Codes}{44}{subsection.15.1.4}
\contentsline {subsection}{\numberline {15.1.5}See Also}{44}{subsection.15.1.5}
\contentsline {section}{\numberline {15.2}The \textbf {s3qladm} command}{44}{section.15.2}
\contentsline {subsection}{\numberline {15.2.1}Synopsis}{44}{subsection.15.2.1}
\contentsline {subsection}{\numberline {15.2.2}Description}{45}{subsection.15.2.2}
\contentsline {subsection}{\numberline {15.2.3}Options}{45}{subsection.15.2.3}
\contentsline {subsection}{\numberline {15.2.4}Actions}{45}{subsection.15.2.4}
\contentsline {subsection}{\numberline {15.2.5}Exit Codes}{45}{subsection.15.2.5}
\contentsline {subsection}{\numberline {15.2.6}See Also}{46}{subsection.15.2.6}
\contentsline {section}{\numberline {15.3}The \textbf {mount.s3ql} command}{46}{section.15.3}
\contentsline {subsection}{\numberline {15.3.1}Synopsis}{46}{subsection.15.3.1}
\contentsline {subsection}{\numberline {15.3.2}Description}{46}{subsection.15.3.2}
\contentsline {subsection}{\numberline {15.3.3}Options}{46}{subsection.15.3.3}
\contentsline {subsection}{\numberline {15.3.4}Exit Codes}{47}{subsection.15.3.4}
\contentsline {subsection}{\numberline {15.3.5}See Also}{48}{subsection.15.3.5}
\contentsline {section}{\numberline {15.4}The \textbf {s3qlstat} command}{48}{section.15.4}
\contentsline {subsection}{\numberline {15.4.1}Synopsis}{48}{subsection.15.4.1}
\contentsline {subsection}{\numberline {15.4.2}Description}{48}{subsection.15.4.2}
\contentsline {subsection}{\numberline {15.4.3}Options}{49}{subsection.15.4.3}
\contentsline {subsection}{\numberline {15.4.4}Exit Codes}{49}{subsection.15.4.4}
\contentsline {subsection}{\numberline {15.4.5}See Also}{49}{subsection.15.4.5}
\contentsline {section}{\numberline {15.5}The \textbf {s3qlctrl} command}{49}{section.15.5}
\contentsline {subsection}{\numberline {15.5.1}Synopsis}{49}{subsection.15.5.1}
\contentsline {subsection}{\numberline {15.5.2}Description}{49}{subsection.15.5.2}
\contentsline {subsection}{\numberline {15.5.3}Options}{50}{subsection.15.5.3}
\contentsline {subsection}{\numberline {15.5.4}Exit Codes}{50}{subsection.15.5.4}
\contentsline {subsection}{\numberline {15.5.5}See Also}{50}{subsection.15.5.5}
\contentsline {section}{\numberline {15.6}The \textbf {s3qlcp} command}{50}{section.15.6}
\contentsline {subsection}{\numberline {15.6.1}Synopsis}{50}{subsection.15.6.1}
\contentsline {subsection}{\numberline {15.6.2}Description}{51}{subsection.15.6.2}
\contentsline {subsubsection}{Snapshotting vs Hardlinking}{51}{subsubsection*.21}
\contentsline {subsection}{\numberline {15.6.3}Options}{51}{subsection.15.6.3}
\contentsline {subsection}{\numberline {15.6.4}Exit Codes}{51}{subsection.15.6.4}
\contentsline {subsection}{\numberline {15.6.5}See Also}{52}{subsection.15.6.5}
\contentsline {section}{\numberline {15.7}The \textbf {s3qlrm} command}{52}{section.15.7}
\contentsline {subsection}{\numberline {15.7.1}Synopsis}{52}{subsection.15.7.1}
\contentsline {subsection}{\numberline {15.7.2}Description}{52}{subsection.15.7.2}
\contentsline {subsection}{\numberline {15.7.3}Options}{52}{subsection.15.7.3}
\contentsline {subsection}{\numberline {15.7.4}Exit Codes}{52}{subsection.15.7.4}
\contentsline {subsection}{\numberline {15.7.5}See Also}{53}{subsection.15.7.5}
\contentsline {section}{\numberline {15.8}The \textbf {s3qllock} command}{53}{section.15.8}
\contentsline {subsection}{\numberline {15.8.1}Synopsis}{53}{subsection.15.8.1}
\contentsline {subsection}{\numberline {15.8.2}Description}{53}{subsection.15.8.2}
\contentsline {subsection}{\numberline {15.8.3}Rationale}{53}{subsection.15.8.3}
\contentsline {subsection}{\numberline {15.8.4}Options}{53}{subsection.15.8.4}
\contentsline {subsection}{\numberline {15.8.5}Exit Codes}{54}{subsection.15.8.5}
\contentsline {subsection}{\numberline {15.8.6}See Also}{54}{subsection.15.8.6}
\contentsline {section}{\numberline {15.9}The \textbf {umount.s3ql} command}{54}{section.15.9}
\contentsline {subsection}{\numberline {15.9.1}Synopsis}{54}{subsection.15.9.1}
\contentsline {subsection}{\numberline {15.9.2}Description}{54}{subsection.15.9.2}
\contentsline {subsection}{\numberline {15.9.3}Options}{54}{subsection.15.9.3}
\contentsline {subsection}{\numberline {15.9.4}Exit Codes}{55}{subsection.15.9.4}
\contentsline {subsection}{\numberline {15.9.5}See Also}{55}{subsection.15.9.5}
\contentsline {section}{\numberline {15.10}The \textbf {fsck.s3ql} command}{55}{section.15.10}
\contentsline {subsection}{\numberline {15.10.1}Synopsis}{55}{subsection.15.10.1}
\contentsline {subsection}{\numberline {15.10.2}Description}{55}{subsection.15.10.2}
\contentsline {subsection}{\numberline {15.10.3}Options}{55}{subsection.15.10.3}
\contentsline {subsection}{\numberline {15.10.4}Exit Codes}{56}{subsection.15.10.4}
\contentsline {subsection}{\numberline {15.10.5}See Also}{57}{subsection.15.10.5}
\contentsline {section}{\numberline {15.11}The \textbf {s3ql\_oauth\_client} command}{57}{section.15.11}
\contentsline {subsection}{\numberline {15.11.1}Synopsis}{57}{subsection.15.11.1}
\contentsline {subsection}{\numberline {15.11.2}Description}{57}{subsection.15.11.2}
\contentsline {subsection}{\numberline {15.11.3}Options}{57}{subsection.15.11.3}
\contentsline {subsection}{\numberline {15.11.4}Exit Codes}{57}{subsection.15.11.4}
\contentsline {subsection}{\numberline {15.11.5}See Also}{58}{subsection.15.11.5}
\contentsline {section}{\numberline {15.12}The \textbf {s3ql\_verify} command}{58}{section.15.12}
\contentsline {subsection}{\numberline {15.12.1}Synopsis}{58}{subsection.15.12.1}
\contentsline {subsection}{\numberline {15.12.2}Description}{58}{subsection.15.12.2}
\contentsline {subsection}{\numberline {15.12.3}Options}{58}{subsection.15.12.3}
\contentsline {subsection}{\numberline {15.12.4}Exit Codes}{59}{subsection.15.12.4}
\contentsline {subsection}{\numberline {15.12.5}See Also}{59}{subsection.15.12.5}
\contentsline {section}{\numberline {15.13}The \textbf {pcp} command}{59}{section.15.13}
\contentsline {subsection}{\numberline {15.13.1}Synopsis}{59}{subsection.15.13.1}
\contentsline {subsection}{\numberline {15.13.2}Description}{59}{subsection.15.13.2}
\contentsline {subsection}{\numberline {15.13.3}Options}{60}{subsection.15.13.3}
\contentsline {subsection}{\numberline {15.13.4}Exit Codes}{60}{subsection.15.13.4}
\contentsline {subsection}{\numberline {15.13.5}See Also}{60}{subsection.15.13.5}
\contentsline {section}{\numberline {15.14}The \textbf {expire\_backups} command}{60}{section.15.14}
\contentsline {subsection}{\numberline {15.14.1}Synopsis}{60}{subsection.15.14.1}
\contentsline {subsection}{\numberline {15.14.2}Description}{60}{subsection.15.14.2}
\contentsline {subsection}{\numberline {15.14.3}Options}{61}{subsection.15.14.3}
\contentsline {subsection}{\numberline {15.14.4}Exit Codes}{62}{subsection.15.14.4}
\contentsline {subsection}{\numberline {15.14.5}See Also}{62}{subsection.15.14.5}
\contentsline {chapter}{\numberline {16}Further Resources / Getting Help}{63}{chapter.16}
\contentsline {chapter}{\numberline {17}Implementation Details}{65}{chapter.17}
\contentsline {section}{\numberline {17.1}Metadata Storage}{65}{section.17.1}
\contentsline {section}{\numberline {17.2}Data Storage}{65}{section.17.2}
\contentsline {section}{\numberline {17.3}Data De-Duplication}{65}{section.17.3}
\contentsline {section}{\numberline {17.4}Caching}{66}{section.17.4}
\contentsline {section}{\numberline {17.5}Eventual Consistency Handling}{66}{section.17.5}
\contentsline {section}{\numberline {17.6}Encryption}{66}{section.17.6}
