Table of Contents

  1. Introduction
  2. fedora-dsinfo
  3. fedora-export
  4. fedora-find
  5. fedora-ingest
  6. fedora-ingest-demos
  7. fedora-convert-demos
  8. fedora-purge
  9. fedora-modify
  10. fedora-batch-build
  11. fedora-batch-ingest
  12. fedora-batch-buildingest
  13. fedora-validate-objects

Introduction

The Fedora client distribution comes with several command-line utilities that can be used to run some common operations without bringing up the GUI or writing your own SOAP client. A description and usage instructions for each follows.

This guide assumes you have correctly installed the Fedora client distribution as per the install guide, including having set up your PATH and FEDORA_HOME appropriately. The command-line scripts are located in FEDORA_HOME/client/bin/. In Windows, these commands resolve to batch files (.bat); in Unix, they resolve to shell scripts (.sh).

Note that the memory settings used by the client command-line utilities are set in the script env-client.sh (or env-client.bat on Windows). If you have any problems with running out of memory you can change the default values in this file.

Note: There are also server command-line utilities which perform server rebuilding, validation, and other functions.

fedora-dsinfo

fedora-dsinfo [host] [port] [user] [password] [pid] [protocol] [context]

Where:

Example:

Display key information about each of an object's datastreams.

fedora-dsinfo localhost 8080 fedoraAdmin fedoraAdmin demo:5 http

fedora-export

fedora-export [host:port] [user] [password] [pid | ftyps] [format] [econtext] [path] [protocol] [context]

Where:

Examples:

Export demo:1 for migration in FOXML 1.1 format (from example.com:80 to the current directory).

fedora-export example.com:80 fedoraAdmin fedoraAdmin demo:1 info:fedora/fedora-system:FOXML-1.1 migrate . http

Export all objects in the default export format and context (from example.com:80 to directory /tmp/fedoradump).

fedora-export example.com:80 fedoraAdmin fedoraAdmin DMO default default /tmp/fedoradump http

fedora-find

fedora-find [host] [port] [user] [password] [fields] [phrase] [protocol] [context]

Where:

Example:

A simple way to search a repository's indexed fields. More advanced searches can be done with the web-based search interface at http://host:port/fedora/search

, or the Admin GUI's search interface (shows the pid, Fedora object type, title, and description fields of each object that has the word fedora somewhere in it's indexed fields).

fedora-find localhost 8080 "pid fType title description" "fedora" http

fedora-ingest

fedora-ingest f[ile] [path] [format] [targetHost:targetPort] [targetUser] [targetPassword] [targetProtocol] [log] [context]
fedora-ingest d[ir] [path] [format] [targetHost:targetPort] [targetUser] [targetPassword] [targetProtocol] [log] [context]
fedora-ingest r[epos] [sourceHost:sourcePort] [sourceUser] [sourcePassword] [pid | *] [targetHost:targetPort] [targetUser] [targetPassword] [sourceProtocol] [targetProtocol] [log] [context]

Where:

Examples:

Ingest obj1.xml (encoded in foxml1.1 format) from the current directory into the repository at myrepo.com:80 as user 'jane' with password 'jpw'. The log message will be system-generated, indicating the source path+filename.

fedora-ingest f obj1.xml info:fedora/fedora-system:FOXML-1.1 myrepo.com:80 jane jpw http

Traverse the entire directory structure of c:\archive, and ingests any file. It assumes all files will be in the FOXML 1.1 format and will fail on ingests of files that are not of this format. All log messages will be the quoted string.

fedora-ingest d c:\archive info:fedora/fedora-system:FOXML-1.1 myrepo.com:80 jane janepw http ""

Ingest the object whose pid is 'demo:1' from the source repository 'srcrepo.com:8081' into the target repository 'myrepo.com:80'. The object will be exported from the source repository in the default export format configured at the source. All log messages will be empty.

fedora-ingest r jrepo.com:8081 mike mpw demo:1 myrepo.com:80 jane jpw http http ""

Same as above, but ingests all data objects (type O).

fedora-ingest r jrepo.com:8081 mike mpw O myrepo.com:80 jane jpw http http ""

fedora-ingest-demos

fedora-ingest-demos [host] [port] [user] [password] [protocol] [context]

Where:

Example:

A convenient script to ingest all included demo objects for a new Fedora installation. See the Demo guide for descriptions of these objects. Note for Fedora 3.1 and below: This script should not be run until you have ensured that the hostname and port numbers in the demo objects have been corrected (with the fedora-convert-demos script) to use the actual hostname and port of your Fedora server.

fedora-ingest-demos localhost 8080 fedoraAdmin fedoraAdmin http

fedora-convert-demos

This script is available in Fedora 3.1 and below only.  In Fedora 3.2+, the demo objects don't need conversion because they use the special "http://local.fedora.server/fedora/" syntax where appropriate.  This causes the Fedora server to automatically translate the URLs based on where it is hosted (e.g. http://example.org/foo/), at runtime.

fedora-purge

fedora-purge [host:port] [user] [password] [pid] [protocol] [log] [context]

Where:

Example:

Permanently removes an object from the repository.

fedora-purge localhost 8080 fedoraAdmin fedoraAdmin demo:6 http "It was just a test object"

fedora-modify

The fedora-modify command line utility enables the running of the batch modify utility from the command line.  The default behavior is to only validate the directives.  To actually execute them, you must specify a value for execute-directives.  A sample file showing all the available directives is available in FEDORA_HOME/client/demo/batch-demo/modify-batch-directives.xml.

fedora-modify [host:port] [user] [password] [directives-filepath] [log-filepath] [protocol] [execute-directives] [context]

Where:

fedora-batch-build

The fedora-batch-build command line utility enables the running of the batch build utility of the Administrator GUI client from the command line. The batch build utility creates a "batch" of Fedora objects based on the specified template file and the corresponding directory of object-specific files. Refer to the documentation on the Batch Utility for more details on how to use the batch build utility.

fedora-batch-build [object-template-file] [object-specific-dir] [object-directory] [log-filepath] [log-format]

Where:

fedora-batch-ingest

The fedora-batch-ingest command line utility enables the running of the batch ingest utility of the Administrator GUI client from the command line. The batch ingest utility ingests a "batch" of Fedora objects from the specified directory into the repository. Refer to the documentation on the Batch Utility for more details on how to use the batch ingest utility

fedora-batch-ingest [object-directory] [log-filepath] [log-format] [format] [host:port] [user] [password] [protocol] [context]

Where:

fedora-batch-buildingest

The fedora-batch-buildingest command line utility enables the running of the batch build & ingest utility of the Administrator GUI client from the command line. The batch build & ingest utility creates a "batch" of Fedora objects based on the specified template file and the corresponding directory of object-specific files and then ingests them into the repository.

fedora-batch-buildingest [object-template-file] [object-specific-dir] [object-directory] [log-filepath] [log-format] [host:port] [user] [password] [protocol] [context]

Where:

fedora-validate-objects

The fedora-validate-objects command line utility runs a validation task against a set of objects in the specified repository. Access to the repository is provided via the "-serverurl", "-username" and "-password" parameters. The set of objects is specified using either a "terms" phrase, a "query" sequence, or a "pidfile" (one of these is required, but more than one is not allowed). The "terms" and "query" parameters correspond to the strings used by the FindObjects method of API-A-LITE. The PID file is a plain text file containing one PID per line, ignoring blank lines and comment lines (lines that start with '#').The output of the validator can be controlled with the Log4J properties file. This can be used to suppress certain categories of messages or to restrict output by severity level.

fedora-validate-objects -serverurl [server-base-url] -username [user] -password [password] {-terms [terms] | -query query | -pidfile [path]} -logConfig [log4j-properties-file]

Where:

# In this example, messages regarding objects with no content model are disabled.

# An appender for non-validator logging.
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%d{yyyy-MM-dd' 'HH:mm:ss.SSS} %p (%c) %m%n
log4j.rootLogger=INFO, STDOUT

# An appender for validator logging.
log4j.appender.VALIDATOR=org.apache.log4j.ConsoleAppender
log4j.appender.VALIDATOR.layout=org.apache.log4j.PatternLayout
log4j.appender.VALIDATOR.layout.ConversionPattern=%p [%c] %m%n

# The "root" of the Validator logging categories.
log4j.logger.Validator=INFO, VALIDATOR
log4j.additivity.Validator=false

# Set some categories for special treatment.
log4j.logger.Validator.NoContentModel=OFF