xfsdump(8)


NAME

   xfsdump - XFS filesystem incremental dump utility

SYNOPSIS

   xfsdump -h
   xfsdump [ options ] -f dest [ -f dest ... ] filesystem
   xfsdump [ options ] - filesystem
   xfsdump -I [ subopt=value ... ]

DESCRIPTION

   xfsdump backs up files and their attributes in a filesystem.  The files
   are dumped to storage  media,  a  regular  file,  or  standard  output.
   Options  allow  the  operator to have all files dumped, just files that
   have changed since a previous dump, or just files contained in  a  list
   of pathnames.

   The  xfsrestore(8)  utility re-populates a filesystem with the contents
   of the dump.

   Each invocation of xfsdump dumps just one filesystem.  That  invocation
   is  termed a dump session.  The dump session splits the filesystem into
   one or more dump streams, one per destination.  The split  is  done  in
   filesystem inode number (ino) order, at boundaries selected to equalize
   the size of each stream.  Furthermore, the breakpoints between  streams
   may  be  in  the  middle  of very large files (at extent boundaries) if
   necessary to achieve reasonable stream size  equalization.   Each  dump
   stream  can  span  several media objects, and a single media object can
   contain several dump streams.  The  typical  media  object  is  a  tape
   cartridge.   The  media  object  records the dump stream as one or more
   media files.  A media file is a self-contained partial  dump,  intended
   to  minimize  the impact of media dropouts on the entire dump stream at
   the expense of increasing the time required to complete  the  dump.  By
   default  only  one  media  file  is written unless a media file size is
   specified using the -d option.  Other  techniques,  such  as  making  a
   second  copy  of  the dump image, provide more protection against media
   failures than multiple media files will.

   xfsdump     maintains     an     online     dump      inventory      in
   /var/lib/xfsdump/inventory.   The  -I  option  displays  the  inventory
   contents hierarchically.  The levels of the hierarchy are:  filesystem,
   dump session, stream, and media file.

   The options to xfsdump are:

   -a   Specifies  that  files for which the Data Migration Facility (DMF)
        has complete offline copies (dual-state files) be  treated  as  if
        they  were  offline (OFL).  This means that the file data will not
        be dumped by xfsdump, resulting in a smaller dump  file.   If  the
        file  is  later restored the file data is still accessible through
        DMF.  If both '-a option' and '-z option' are specified,  the  '-a
        option' takes precedence (see '-z option' below).

   -b blocksize
        Specifies  the  blocksize, in bytes, to be used for the dump.  The
        same blocksize must be specified to restore the tape.  If  the  -m
        option  is  not  used,  then  -b  does  not  need to be specified.
        Instead, a default blocksize of 1Mb will be used.

   -c progname
        Use the specified program to  alert  the  operator  when  a  media
        change  is  required.  The  alert program is typically a script to
        send a mail or flash a window to draw the operator's attention.

   -d filesize
        Specifies the size, in megabytes, of dump  media  files.   If  not
        specified,  xfsdump  will  dump  data to tape using a single media
        file per media object.  The specified media file size may need  to
        be  adjusted if, for example, xfsdump cannot fit a media file onto
        a single tape.

   -e   Allow files to be excluded from the dump.  This will cause xfsdump
        to skip files which have the "no dump" file attribute set. See the
        "Excluding individual files" section below for details on  setting
        this file attribute.

   -f dest [ -f dest ... ]
        Specifies  a  dump  destination.   A  dump  destination can be the
        pathname of a device (such as a tape drive), a regular file  or  a
        remote  tape  drive  (see rmt(8)).  This option must be omitted if
        the  standard  output  option  (a  lone  -  preceding  the  source
        filesystem specification) is specified.

   -l level
        Specifies  a  dump level of 0 to 9.  The dump level determines the
        base dump to which this dump is relative.  The base  dump  is  the
        most  recent dump at a lesser level.  A level 0 dump is absolute -
        all files are dumped.  A dump level where  1  <=  level  <=  9  is
        referred  to  as  an  incremental dump.  Only files that have been
        changed since the base dump are dumped.  Subtree dumps (see the -s
        option below) cannot be used as the base for incremental dumps.

   -m   Use  the  minimal  tape protocol for non-scsi tape destinations or
        remote tape destinations which are not scsi Linux tape drives  nor
        IRIX tape drives.  This option cannot be used without specifying a
        blocksize to be used (see -b option above).

   -o   Overwrite the tape. With this option, xfsdump does  not  read  the
        tape  first  to  check  the  contents.  This option may be used if
        xfsdump is unable to determine the block size of a tape .

   -p interval
        Causes progress reports to be printed at the  specified  interval.
        interval  is  given in seconds.  The progress report indicates how
        many files have been dumped, the total number of  files  to  dump,
        the percentage of data dumped, and the elapsed time.

   -q   Destination  tape  drive  is a QIC tape.  QIC tapes only use a 512
        byte blocksize, for which xfsdump must make special allowances.

   -s pathname [ -s pathname ... ]
        Restricts the dump to files contained in the  specified  pathnames
        (subtrees).  A pathname must be relative to the mount point of the
        filesystem.  For example, if a filesystem is mounted at  /d2,  the
        pathname  argument  for  the  directory /d2/users is ``users''.  A
        pathname can be a file or a directory; if it is a  directory,  the
        entire  hierarchy  of  files  and  subdirectories  rooted  at that
        directory is dumped.  Subtree dumps cannot be used as the base for
        incremental dumps (see the -l option above).

   -t file
        Sets  the  dump  time to the modification time of file rather than
        using the current time.  xfsdump uses the dump time  to  determine
        what  files  need to be backed up during an incremental dump. This
        option should be used when dumping snapshots so that the dump time
        matches  the time the snapshot was taken. Otherwise files modified
        after a snapshot is taken may be skipped in the  next  incremental
        dump.

   -v verbosity
   -v subsys=verbosity[,subsys=verbosity,...]
        Specifies  the  level of detail used for messages displayed during
        the course of the dump. The verbosity argument can  be  passed  as
        either a string or an integer. If passed as a string the following
        values may be used: silent, verbose, trace, debug, or  nitty.   If
        passed  as an integer, values from 0-5 may be used. The values 0-4
        correspond to the strings already listed. The value 5 can be  used
        to produce even more verbose debug output.

        The first form of this option activates message logging across all
        dump subsystems. The second form allows the message logging  level
        to  be  controlled  on a per-subsystem basis. The two forms can be
        combined (see the example below). The argument subsys can take one
        of  the  following values: general, proc, drive, media, inventory,
        inomap and excluded_files.

        For example, to dump the root filesystem  with  tracing  activated
        for all subsystems:

             # xfsdump -v trace -f /dev/tape /

        To enable debug-level tracing for drive and media operations:

             # xfsdump -v drive=debug,media=debug -f /dev/tape /

        To  enable tracing for all subsystems, and debug level tracing for
        drive operations only:

             # xfsdump -v trace,drive=debug -f /dev/tape /

        To list files that will be excluded from the dump:

             # xfsdump -e -v excluded_files=debug -f /dev/tape /

   -z size
        Specifies the maximum size, in kilobytes, of files to be  included
        in  the  dump.   Files  over  this size, will be excluded from the
        dump,  except  for  DMF  dual-state  files  when  '-a  option'  is
        specified  (see  '-a  option' above).  When specified, '-a option'
        takes precedence over '-z option'. The size is an  estimate  based
        on  the  number  of  disk blocks actually used by the file, and so
        does not include holes.  In other words, size refers to the amount
        of  space  the  file  would  take  in  the  resulting dump.  On an
        interactive restore, the skipped file is visible with xfsrestore's
        'ls'  and  while  you  can  use  the 'add' and 'extract' commands,
        nothing will be restored.

   -A   Do not dump extended file attributes.  When dumping  a  filesystem
        managed  within  a DMF environment this option should not be used.
        DMF  stores  file  migration  status  within  extended  attributes
        associated  with  each file. If these attributes are not preserved
        when the filesystem is restored, files that had been  in  migrated
        state  will  not  be recallable by DMF. Note that dumps containing
        extended file attributes cannot be restored with older versions of
        xfsrestore(8).

   -B session_id
        Specifies  the ID of the dump session upon which this dump session
        is to be based.  If this option is specified, the -l  (level)  and
        -R  (resume) options are not allowed.  Instead, xfsdump determines
        if the current dump session should be incremental and/or  resumed,
        by looking at the base session's level and interrupted attributes.
        If the base session was interrupted, the current dump session is a
        resumption of that base at the same level.  Otherwise, the current
        dump session is an incremental dump with a level one greater  than
        that  of  the  base  session.   This option allows incremental and
        resumed dumps to be based on any previous dump, rather  than  just
        the most recent.

   -D   Controls  which  directories  are  backed up during an incremental
        dump. By default unchanged directories  are  dumped  if  files  or
        directories  beneath  them  have  changed. This results in a self-
        contained dump -- if a base dump is lost, or you know the  file(s)
        you  wish  to  restore  is in an incremental dump, you can restore
        just that dump without loading the base  dump(s)  first.  However,
        this method requires a potentially expensive traversal through the
        filesystem.

        When -D is specified, unchanged directories are not dumped.   This
        results   in  a  faster  dump,  but  files  will  end  up  in  the
        xfsrestore(8) orphanage  directory  unless  the  base  dump(s)  is
        loaded first.

   -E   Pre-erase  media.   If  this  option is specified, media is erased
        prior to use.  The operator is prompted for  confirmation,  unless
        the -F option is also specified.

   -F   Don't prompt the operator.  When xfsdump encounters a media object
        containing non-xfsdump data, xfsdump normally  asks  the  operator
        for  permission  to  overwrite.  With this option the overwrite is
        performed, no questions asked.  When  xfsdump  encounters  end-of-
        media during a dump, xfsdump normally asks the operator if another
        media object will be provided.   With  this  option  the  dump  is
        instead interrupted.

   -I   Displays  the  xfsdump  inventory (no dump is performed).  xfsdump
        records  each   dump   session   in   an   online   inventory   in
        /var/lib/xfsdump/inventory.    xfsdump   uses  this  inventory  to
        determine the base for incremental dumps.  It is also  useful  for
        manually identifying a dump session to be restored.  Suboptions to
        filter the inventory display are described later.

   -J   Inhibits the normal update of the inventory.  This is useful  when
        the media being dumped to will be discarded or overwritten.

   -K   Generate  a  format  2 dump instead of the current format. This is
        useful if the dump will be restored on  a  system  with  an  older
        xfsrestore  which does not understand the current dump format. Use
        of this option is otherwise not recommended.

   -L session_label
        Specifies a label for the dump session.  It can be  any  arbitrary
        string up to 255 characters long.

   -M label [ -M label ... ]
        Specifies  a  label  for the first media object (for example, tape
        cartridge) written on the  corresponding  destination  during  the
        session.   It  can  be  any  arbitrary string up to 255 characters
        long.  Multiple media object labels can be specified, one for each
        destination.

   -O options_file
        Insert the options contained in options_file into the beginning of
        the command line.  The options are specified just  as  they  would
        appear  if  typed  into  the  command  line.  In addition, newline
        characters (\n) can be used as whitespace.  The options are placed
        before  all options actually given on the command line, just after
        the command name.  Only one -O option can be used.  Recursive  use
        is   ignored.   The  source  filesystem  cannot  be  specified  in
        options_file.

   -R   Resumes a previously interrupted dump session.  If the most recent
        dump  at  this dump's level (-l option) was interrupted, this dump
        contains only files not in the  interrupted  dump  and  consistent
        with  the  incremental  level.   However,  files  contained in the
        interrupted dump that have  been  subsequently  modified  are  re-
        dumped.

   -T   Inhibits interactive dialogue timeouts.  When the -F option is not
        specified, xfsdump prompts  the  operator  for  labels  and  media
        changes.   Each  dialogue  normally  times  out  if no response is
        supplied.  This option prevents the timeout.

   -Y length
        Specify I/O buffer ring length.  xfsdump uses  a  ring  of  output
        buffers to achieve maximum throughput when dumping to tape drives.
        The default ring length is 3.   However,  this  is  not  currently
        enabled on Linux yet, making this option benign.

   -    A lone - causes the dump stream to be sent to the standard output,
        where it can be piped to another utility such as xfsrestore(8)  or
        redirected  to  a  file.   This  option cannot be used with the -f
        option.  The - must follow  all  other  options  and  precede  the
        filesystem specification.

   The filesystem, filesystem, can be specified either as a mount point or
   as  a  special  device  file  (for  example,  /dev/dsk/dks0d1s0).   The
   filesystem must be mounted to be dumped.

NOTES

   Dump Interruption
   A dump can be interrupted at any time and later resumed.  To interrupt,
   type control-C (or the  current  terminal  interrupt  character).   The
   operator  is  prompted  to  select one of several operations, including
   dump interruption.  After the operator selects dump  interruption,  the
   dump continues until a convenient break point is encountered (typically
   the end of the current file).  Very large files are broken into smaller
   subfiles, so the wait for the end of the current file is brief.

   Dump Resumption
   A  previously  interrupted  dump  can  be  resumed by specifying the -R
   option.   If  the  most  recent  dump  at  the  specified   level   was
   interrupted, the new dump does not include files already dumped, unless
   they have changed since the interrupted dump.

   Media Management
   A single media object can contain many  dump  streams.   Conversely,  a
   single  dump  stream can span multiple media objects.  If a dump stream
   is sent to a media object already containing one or more dumps, xfsdump
   appends  the  new  dump stream after the last dump stream.  Media files
   are never overwritten.   If  end-of-media  is  encountered  during  the
   course of a dump, the operator is prompted to insert a new media object
   into the drive.  The dump stream continuation  is  appended  after  the
   last media file on the new media object.

   Inventory
   Each    dump    session    updates    an    inventory    database    in
   /var/lib/xfsdump/inventory.  xfsdump uses the  inventory  to  determine
   the base of incremental and resumed dumps.

   This  database can be displayed by invoking xfsdump with the -I option.
   The  display  uses  tabbed  indentation  to   present   the   inventory
   hierarchically.   The  first  level is filesystem.  The second level is
   session.  The third level is media stream (currently only one stream is
   supported).   The  fourth  level  lists  the  media  files sequentially
   composing the stream.

   The following suboptions are available to filter the display.

   -I depth=n
        (where n is 1, 2, or 3)  limits  the  hierarchical  depth  of  the
        display.  When  n  is  1, only the filesystem information from the
        inventory is displayed. When n is 2, only filesystem  and  session
        information  are  displayed. When n is 3, only filesystem, session
        and stream information are displayed.

   -I level=n
        (where n is the dump level) limits the display to  dumps  of  that
        particular dump level.

   The  display  may  be restricted to media files contained in a specific
   media object.

   -I mobjid=value
        (where value is a media ID) specifies  the  media  object  by  its
        media ID.

   -I mobjlabel=value
        (where  value  is a media label) specifies the media object by its
        media label.

   Similarly, the display can be restricted to a specific filesystem.

   -I mnt=mount_point
        (that  is,  [hostname:]pathname),  identifies  the  filesystem  by
        mountpoint.   Specifying  the  hostname  is  optional,  but may be
        useful in a clustered environment where more than one host can  be
        responsible for dumping a filesystem.

   -I fsid=filesystem_id
        identifies the filesystem by filesystem ID.

   -I dev=device_pathname
        (that is, [hostname:]device_pathname) identifies the filesystem by
        device. As  with  the  mnt  filter,  specifying  the  hostname  is
        optional.

   More  than  one  of  these  suboptions,  separated  by  commas,  may be
   specified at the same time to limit the display  of  the  inventory  to
   those  dumps  of  interest.   However,  at  most four suboptions can be
   specified at once: one to constrain the display hierarchy depth, one to
   constrain the dump level, one to constrain the media object, and one to
   constrain the filesystem.

   For example, -I  depth=1,mobjlabel="tape  1",mnt=host1:/test_mnt  would
   display only the filesystem information (depth=1) for those filesystems
   that were mounted on host1:/test_mnt at the time of the dump, and  only
   those filesystems dumped to the media object labeled "tape 1".

   Dump  records  may  be  removed  (pruned)  from the inventory using the
   xfsinvutil program.

   An additional media file is placed at the  end  of  each  dump  stream.
   This media file contains the inventory information for the current dump
   session.  Its contents may be merged back  into  the  online  inventory
   database at a later time using xfsrestore(1M).

   The  inventory files stored in /var/lib/xfsdump are not included in the
   dump, even if that directory is contained within the  filesystem  being
   dumped.   Including  the  inventory  in  the  dump  may lead to loss or
   corruption of data, should an older version be restored overwriting the
   current  version.   To  backup  the  xfsdump inventory, the contents of
   /var/lib/xfsdump should be copied to another location which may then be
   safely  dumped.   Upon restoration, those files may be copied back into
   /var/lib/xfsdump,  overwriting  whatever  files  may   be   there,   or
   xfsinvutil(1M)  may  be used to selectively merge parts of the restored
   inventory back into the current inventory.   Prior  to  version  1.1.8,
   xfsdump would include the /var/lib/xfsdump directory in the dump.  Care
   should be taken not to overwrite the  /var/lib/xfsdump  directory  when
   restoring  an  old  dump, by either restoring the filesystem to another
   location or by copying the current contents of  /var/lib/xfsdump  to  a
   safe place prior to running xfsrestore(1M).

   Labels
   The  operator  can  specify  a label to identify the dump session and a
   label to identify a media object.  The session label is placed in every
   media  file  produced in the course of the dump, and is recorded in the
   inventory.

   The media label is used to identify media objects, and  is  independent
   of  the  session label.  Each media file on the media object contains a
   copy of the  media  label.   An  error  is  returned  if  the  operator
   specifies  a media label that does not match the media label on a media
   object containing valid media files.  Media labels are recorded in  the
   inventory.

   UUIDs
   UUIDs  (Universally  Unique  Identifiers)  are used in three places: to
   identify the filesystem being dumped (using the  filesystem  UUID,  see
   xfs(5) for more details), to identify the dump session, and to identify
   each media object.  The inventory display (-I) includes all of these.

   Dump Level Usage
   The dump level mechanism provides  a  structured  form  of  incremental
   dumps.   A  dump  of  level level includes only files that have changed
   since the most recent dump at a level less than  level.   For  example,
   the  operator  can  establish a dump schedule that involves a full dump
   every Friday and a daily incremental dump containing  only  files  that
   have changed since the previous dump.  In this case Friday's dump would
   be at level 0, Saturday's at level 1, Sunday's at level 2, and  so  on,
   up to the Thursday dump at level 6.

   The above schedule results in a very tedious restore procedure to fully
   reconstruct the Thursday version of the  filesystem;  xfsrestore  would
   need  to  be  fed all 7 dumps in sequence.  A compromise schedule is to
   use level 1 on Saturday, Monday, and Wednesday, and level 2 on  Sunday,
   Tuesday,  and  Thursday.   The  Monday  and  Wednesday dumps would take
   longer, but the worst case restore requires the  accumulation  of  just
   three dumps, one each at level 0, level 1, and level 2.

   Quotas
   If  the  filesystem being dumped contains user quotas, xfsdump will use
   xfs_quota(8) to store the quotas in a file called xfsdump_quotas in the
   root of the filesystem to be dumped. This file will then be included in
   the dump.  Upon restoration, xfs_quota (8) can be  used  to  reactivate
   the  quotas for the filesystem.  Note, however, that the xfsdump_quotas
   file will probably require modification to  change  the  filesystem  or
   UIDs  if  the  filesystem has been restored to a different partition or
   system. Group and project quotas will be handled in a  similar  fashion
   and  saved in files called xfsdump_quotas_group and xfsdump_quotas_proj
   , respectively.

   Excluding individual files
   It may be desirable to exclude particular files or directories from the
   dump.   The  -s  option  can  be  used to limit the dump to a specified
   directory, and the -z option can  be  used  to  exclude  files  over  a
   particular size.  Additionally, when xfsdump is run with the -e option,
   files that are tagged with the "no dump" file  attribute  will  not  be
   included  in  the  dump.  The chattr(1) command can be used to set this
   attribute on individual files or entire subtrees.

   To tag an individual file for exclusion from the dump:

        $ chattr +d file

   To tag all files in a subtree for exclusion from the dump:

        $ chattr -R +d directory

   Note that any new files or directories created in a directory which has
   the  "no dump" attribute set will automatically inherit this attribute.
   Also note that xfsdump does not check directories  for  the  "no  dump"
   attribute.

   Care  should  be  taken  to  note  which files have been tagged.  Under
   normal operation, xfsdump will only report the number of files it  will
   skip.   The -v excluded_files=debug option, however, will cause xfsdump
   to list the inode numbers of the individual files affected.

EXAMPLES

   To perform a level 0, single stream dump of the root  filesystem  to  a
   locally mounted tape drive, prompting for session and media labels when
   required:

        # xfsdump -f /dev/tape /

   To specify session and media labels explicitly:

        # xfsdump -L session_1 -M tape_0 -f /dev/tape /

   To perform a dump to a remote tape using the minimal rmt protocol and a
   set blocksize of 64k:

        # xfsdump -m -b 65536 -f otherhost:/dev/tape /

   To  perform  a  level  0, multi-stream dump to two locally mounted tape
   drives:

        # xfsdump -L session_2 -f /dev/rmt/tps4d6v -M tape_1 \
                  -f /dev/rmt/tps5d6v -M tape_2 /

   To perform a level 1 dump relative to the last level 0 dump recorded in
   the inventory:

        # xfsdump -l 1 -f /dev/tape /

   To  copy  the  contents  of  a  filesystem  to  another  directory (see
   xfsrestore(8)):

        # xfsdump -J - / | xfsrestore -J - /new

FILES

   /var/lib/xfsdump/inventory
                            dump inventory database

SEE ALSO

   attr(1),   rmt(8),    xfsrestore(8),    xfsinvutil(8),    xfs_quota(8),
   attr_get(2).

DIAGNOSTICS

   The exit code is 0 on normal completion, non-zero if an error occurs or
   the dump is terminated by the operator.

   For all verbosity levels greater than 0 (silent) the final line of  the
   output shows the exit status of the dump. It is of the form:

        xfsdump: Dump Status: code

   Where   code  takes  one  of  the  following  values:  SUCCESS  (normal
   completion), INTERRUPT (interrupted), QUIT (media  no  longer  usable),
   INCOMPLETE   (dump  incomplete),  FAULT  (software  error),  and  ERROR
   (resource error).  Every attempt will be made to keep both  the  syntax
   and  the  semantics of this log message unchanged in future versions of
   xfsdump.  However, it may be necessary to refine or expand the  set  of
   exit codes, or their interpretation at some point in the future.

   The  message  ``xfsdump:  WARNING:  unable  to  open  directory: ino N:
   Invalid argument'' can occur with filesystems which are actively  being
   modified while xfsdump is running.  This can happen to either directory
   or regular file inodes - affected files will not end up  in  the  dump,
   files  below  affected  directories  will  be  placed  in the orphanage
   directory by xfsrestore.

BUGS

   xfsdump does not dump unmounted filesystems.

   The dump frequency field of /etc/fstab is not supported.

   xfsdump uses the alert program only when a media change is required.

   xfsdump requires root privilege (except for inventory display).

   xfsdump can only dump XFS filesystems.

   The media format used by xfsdump can only be understood by xfsrestore.

   xfsdump does not know how to manage  CD-ROM  or  other  removable  disk
   drives.

   xfsdump  can become confused when doing incremental or resumed dumps if
   on the same machine you dump two XFS filesystems and  both  filesystems
   have  the  same  filesystem  identifier (UUID).  Since xfsdump uses the
   filesystem identifier to identify filesystems,  xfsdump  maintains  one
   combined  set  of  dump inventories for both filesystems instead of two
   sets of dump inventories.  This scenario can happen only if dd or  some
   other  block-by-block  copy  program  was used to make a copy of an XFS
   filesystem.  See xfs_copy(8) and xfs(5) for more details.

                                                                xfsdump(8)





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.