Provided by: gnunet_0.20.0-4.1build3_amd64 bug

NAME

       gnunet-publish — a command line interface for publishing new content into GNUnet

SYNOPSIS

       gnunet-publish     [-a     LEVEL    |    --anonymity=LEVEL]    [-c    FILENAME    |    --config=FILENAME]
                      [-D | --disable-extractor] [-E | --enable-creation-time] [-e | --extract]  [-h  |  --help]
                      [-k     KEYWORD     |     --key=KEYWORD]     [-L     LOGLEVEL    |    --loglevel=LOGLEVEL]
                      [-m  TYPE:VALUE  |   --meta=TYPE:VALUE]   [-n   |   --noindex]   [-N   ID   |   --next=ID]
                      [-p      PRIORITY      |     --prio=PRIORITY]     [-P     NAME     |     --pseudonym=NAME]
                      [-r  LEVEL  |  --replication=LEVEL]  [-s  |   --simulate-only]   [-t   ID   |   --this=ID]
                      [-u URI | --uri=URI] [-v | --version] [-V | --verbose] ⟨FILENAME

DESCRIPTION

       In  order  to  share  files  with  other  GNUnet users, the files must first be made available to GNUnet.
       GNUnet does not automatically share all files from a certain directory (however, you  can  do  this  with
       gnunet-auto-share(1)). In fact, even files that are downloaded are not automatically shared.

       In  order  to  start  sharing  files,  the files must be added either using gnunet-publish or a graphical
       interface such as gnunet-fs-gtk(1).  The command line tool gnunet-publish is more useful  if  many  files
       are supposed to be added.  gnunet-publish can automatically publish batches of files, recursively publish
       directories,  create directories that can be browsed within GNUnet and publish file lists in a namespace.
       When run on a directory, gnunet-publish  will  always  recursively  publish  all  of  the  files  in  the
       directory.

       gnunet-publish  can  automatically  extract  keywords from the files that are shared.  Users that want to
       download files from GNUnet use keywords to search for the appropriate content.  You can  disable  keyword
       extraction  with  the  -D  option.   You can manually add keywords using the -k option.  The keywords are
       case-sensitive.

       In addition to searching for files by keyword, GNUnet allows organizing  files  into  directories.   With
       directories,  the  user only needs to find the directory in order to be able to download any of the files
       listed in the directory.  Directories can contain pointers to other directories.

       With gnunet-publish, it is easy to create new directories simultaneously when adding the  files.   Simply
       pass the name of a directory instead of a file.

       Since  keywords  can  be  spammed  (any  user  can  add  any  content under any keyword), GNUnet supports
       namespaces.  A namespace is a subset of the searchspace into which only the holder of a certain pseudonym
       can add content.  Any GNUnet  user  can  create  any  number  of  pseudonyms  using  gnunet-pseudonym(1).
       Pseudonyms  are  stored  in the user's GNUnet directory.  While pseudonyms are locally identified with an
       arbitrary string that the user selects when the pseudonym is created, the  namespace  is  globally  known
       only  under  the  hash of the public key of the pseudonym.  Since only the owner of the pseudonym can add
       content to the namespace, it is impossible for other users  to  pollute  the  namespace.   gnunet-publish
       automatically  publishes  the  top-directory  (or  the  only file if only one file is specified) into the
       namespace if a pseudonym is specified.

       It is possible to update content in GNUnet if that content was placed  and  obtained  from  a  particular
       namespace.  Updates are only possible for content in namespaces since this is the only way to assure that
       a  malicious  party  can not supply counterfeited updates.  Note that an update with GNUnet does not make
       the old content unavailable, GNUnet merely allows the publisher to point users to more  recent  versions.
       You  can  use  the  -N  option  to specify the future identifier of an update.  When using this option, a
       GNUnet client that finds the current (-t) identifier will automatically begin a  search  for  the  update
       (-N) identifier.  If you later publish an update under the (-N) identifier, both results will be given to
       the user.

       You  can  use  automatic  meta-data  extraction  (based on libextractor) or the command-line option -m to
       specify meta-data.  For the -m option you need to use the form keyword-type:value.  For example, use  "-m
       os:Linux"  to  specify that the operating system is Linux.  Common meta-data types are "author", "title",
       "mimetype", "filename", "language", "subject" and "keywords".  A full  list  can  be  obtained  from  the
       extract  tool using the option --list.  The meta-data is used to help users in searching for files on the
       network.  The keywords are case-sensitive.

       GNUnet supports two styles of publishing files on the network.  Publishing a file means that  a  copy  of
       the  file is made in the local (!) database of the node.  Indexing a file means that an index is added to
       the local (!) database with symbolic links to the file itself.  The links will use the  SHA-512  hash  of
       the  entire  file  as  the  filename.  Indexing is generally significantly more efficient and the default
       choice.  However, indexing only works if the indexed file can be read (using the same absolute  path)  by
       gnunet-service-fs.   If  this  is not the case, indexing will fail (and gnunet-publish will automatically
       revert to publishing instead).  Regardless of which method is used to publish the file, the file will  be
       slowly (depending on how often it is requested and on how much bandwidth is available) dispersed into the
       network.   If  you  publish  or  index  a  file  and then leave the network, it will almost always NOT be
       available anymore.

       The options are as follows:

       -a LEVEL | --anonymity=LEVEL
               This option can be used to specify additional anonymity constraints.  The default is 1.   If  set
               to  0,  GNUnet  will  publish the file non-anonymously and in fact sign the advertisement for the
               file using your peer's private key.  This will allow other users to download the file as fast  as
               possible,  including  using non-anonymous methods (discovery via DHT and CADET transfer).  If you
               set it to 1 (default),  you  use  the  standard  anonymous  routing  algorithm  (which  does  not
               explicitly  leak  your  identity).   However,  a  powerful adversary may still be able to perform
               traffic analysis (statistics) to over time discovery your identity.  You can gain better  privacy
               by  specifying  a  higher  level of anonymity (using values above 1).  This tells FS that it must
               hide your own requests in equivalent-looking cover traffic.  This should confound an  adversaries
               traffic  analysis,  increasing  the  time  and  effort  it  would take to discover your identity.
               However, it also can significantly reduce performance, as your requests  will  be  delayed  until
               sufficient cover traffic is available.  The specific numeric value (for anonymity levels above 1)
               is  simple:  Given  an  anonymity level L (above 1), each request FS makes on your behalf must be
               hidden in L-1 equivalent requests of cover traffic (traffic your peer routes for others)  in  the
               same time-period.  The time-period is twice the average delay by which GNUnet artificially delays
               traffic.  Note that regardless of the anonymity level you choose, peers that cache content in the
               network always use anonymity level 1.

       -c FILENAME | --config=FILENAME
               Use  alternate  config  file  FILENAME.   If  this  option  is  not  specified,  the  default  is
               ~/.config/gnunet.conf.

       -D | --disable-extractor
               Disable use of GNU libextractor for finding additional keywords and metadata.

       -E | --enable-creation-time
               Enable use  of  creation  time  timestamp  in  metadata.   Setting  this  information  will  leak
               information about the time at which a file was made available.

       -e | --extract
               Print  the  list  of  keywords that will be used for each file given the current options.  Do not
               perform any indexing or publishing.

       -h | --help
               Print the help page.

       -k KEYWORD | --key=KEYWORD
               Additional key to index the content with (to add multiple keys, specify  multiple  times).   Each
               additional  key is case-sensitive.  Can be specified multiple times.  The keyword is only applied
               to the top-level file or directory.

       -L LOGLEVEL | --loglevel=LOGLEVEL
               Change the loglevel.  Possible values for LOGLEVEL are ERROR, WARNING, INFO and DEBUG.

       -m TYPE:VALUE | --meta=TYPE:VALUE
               For the main file (or directory), set the metadata of the given TYPE to the  given  VALUE.   Note
               that  this  will  not add the respective VALUE to the set of keywords under which the file can be
               found.

       -n | --noindex
               Executive summary: You probably don't need  it.   Do  not  index,  full  publishing.   Note  that
               directories,  information  for  keyword  search,  namespace  search  and indexing data are always
               published (even without this option).  With this option, every  block  of  the  actual  files  is
               stored  in  encrypted  form in the block database of the local peer.  While this adds security if
               the local node is compromised (the adversary  snags  your  machine),  it  is  significantly  less
               efficient compared to on-demand encryption and is definitely not recommended for large files.

       -N ID | --next=ID
               Specifies  the  next  identifier  of  a future version of the file to be published under the same
               pseudonym.  This option is only valid together with the -P option.  This option can  be  used  to
               specify what the identifier of an updated version will look like.  Note that specifying -i and -N
               without -t is not allowed.

       -p PRIORITY | --prio=PRIORITY
               Executive  summary:  You  probably  don't  need  it.   Set  the priority of the published content
               (default: 365).  If the local database is full, GNUnet will discard the content with  the  lowest
               ranking.   Note  that ranks change over time depending on popularity.  The default should be high
               enough to preserve the locally published content in favor of content  that  migrates  from  other
               peers.

       -P NAME | --pseudonym=NAME
               For  the  top-level  directory  or  file,  places  the  file into the namespace identified by the
               pseudonym NAME.  NAME must be a valid pseudonym managed by gnunet-identity(1).

       -r LEVEL | --replication=LEVEL
               Set the desired replication level.  If CONTENT_PUSHING is set to YES, GNUnet will push each block
               (for the file) LEVEL times to other  peers  before  doing  normal  "random"  replication  of  all
               content.   This  option  can be used to push some content out into the network harder.  Note that
               pushing content LEVEL times into the network does not guarantee that there will actually be LEVEL
               replicas.

       -s | --simulate-only
               When this option is used, gnunet-publish will not actually publish the  file  but  just  simulate
               what  would  be  done.   This  can  be used to compute the GNUnet URI for a file without actually
               sharing it.

       -t ID | --this=ID
               Specifies the identifier under which the file is to be published under a pseudonym.  This  option
               is only valid together with the -P option.

       -u URI | --uri=URI
               This option can be used to specify the URI of a file instead of a filename (this is the only case
               where  the  otherwise mandatory filename argument must be omitted).  Instead of publishing a file
               or directory and using the corresponding URI, gnunet-publish will use this URI  and  perform  the
               selected  namespace or keyword operations.  This can be used to add additional keywords to a file
               that has already been shared or to add files to a namespace for which the URI is  known  but  the
               content is not locally available.

       -v | --version
               Print the version number.

       -V | --verbose
               Be verbose.  Using this option causes gnunet-publish to print progress information and at the end
               the file identification that can be used to download the file from GNUnet.

EXAMPLES

   BASIC EXAMPLES
       Index a file COPYING:

             gnunet-publish COPYING

       Publish a file COPYING:

             gnunet-publish -n COPYING

       Index a file COPYING with the keywords gpl and test:

             gnunet-publish -k gpl -k test COPYING

       Index a file COPYING with description GNU License, mime-type text/plain and keywords gpl and test:

             gnunet-publish -m description:GNU License -k gpl -k test -m mimetype:text/plain COPYING

   USING DIRECTORIES
       Index  the  files  COPYING  and AUTHORS with keyword test and build a directory containing the two files.
       Make the directory itself available under keyword gnu and disable keyword extraction using libextractor:

             mkdir gnu; mv COPYING AUTHORS gnu/; gnunet-publish -k test -k gnu -D gnu/

       Neatly publish an image gallery in kittendir/ and its subdirs with keyword kittens for the directory  but
       no keywords for the individual files or subdirs (-n).  Force description for all files.

             gnunet-publish -n -m description:Kitten collection -k kittens kittendir/

   SECURE PUBLISHING WITH NAMESPACES
       Publish file COPYING with pseudonym RIAA-2 (-P) and with identifier gpl (-t) and no updates.

             gnunet-publish -P RIAA-2 -t gpl COPYING

       Recursively  index  /home/ogg  and build a matching directory structure.  Publish the top-level directory
       into the namespace under the pseudonym RIAA-2 (-P) under identifier 'MUSIC' (-t) and promise  to  provide
       an update with identifier 'VIDEOS' (-N):

             gnunet-publish -P RIAA-2 -t MUSIC -N VIDEOS /home/ogg

       Recursively  publish (-n) /var/lib/mysql and build a matching directory structure, but disable the use of
       libextractor to extract keywords (-n).  Print the file identifiers (-V) that can be used to retrieve  the
       files.   This will store a copy of the MySQL database in GNUnet but without adding any keywords to search
       for it.  Thus only people that have been told the secret file identifiers printed with the -V option  can
       retrieve the (secret?) files:

             gnunet-publish -nV /var/lib/mysql

       Create  a  namespace  entry  'root'  in namespace MPAA-1 and announce that the next update will be called
       'next':

             gnunet-publish -P MPAA-1 -t root -N next noise.mp3

       Update the previous entry, do not allow any future updates:

             gnunet-publish -P MPAA-1 -t next noise_updated.mp3

FILES

       ~/.config/gnunet.conf GNUnet configuration file

SEE ALSO

       extract(1),    gnunet-auto-share(1),    gnunet-download(1),     gnunet-fs-gtk(1),     gnunet-identity(1),
       gnunet-search(1), gnunet.conf(5)

       The  full documentation for gnunet is maintained as a Texinfo manual.  If the info(1) and gnunet programs
       are properly installed at your site, the command

             info gnunet

       should give you access to the complete handbook,

             info gnunet-c-tutorial

       will give you access to a tutorial for developers.

       Depending on your installation, this information is also available in gnunet(7) and gnunet-c-tutorial(7).

BUGS

       Report   bugs   by    using    https://bugs.gnunet.org    or    by    sending    electronic    mail    to
       ⟨gnunet-developers@gnu.org⟩.

Debian                                          November 16, 2015                              GNUNET-PUBLISH(1)