Use the Content Management Shell (CMShell)
The Content Management Shell (CMShell) allows you to log in to a shell-like interface to manage content in NetStorage, using a secure environment.
CMShell configuration requirements
CMShell requires a client that supports SSH protocol 2 (DSA/RSA). Use any client that provides secure, persistent sessions to securely connect to a storage group. CMShell supports both interactive login and single command execution. This includes applications such as “PuTTY” and “WinSCP.” You can use CMShell after you add an SSH key to your upload account.
Configure “PuTTY” for CMShell
To configure an SSH client, you'll need various items and information:
- The “private” instance of your SSH key. This key resolves with the “public” key that you applied to the upload account. This file must be locally accessible.
- The storage group "domain name prefix". This is the storage group you will be accessing.
- The secure login username. This is always “sshacs” for secure NetStorage access.
- The client must support “remote commands”. Your client needs to append
cms
as a remote command to the connection call. - The password assigned to the private SSH key. If you assigned a password during key generation, you will need to know it.
Apply an SSH key to the PuTTY application
- Launch PuTTY
- Ensure the Category is set to Session, and input the following in the Host Name (or IP address) field:
<Domain Name Prefix>.ssh.upload.akamai.com
- Set the Connection Type to SSH.
- Select the Connection > Data sub-category, and set the Auto-login username to “sshacs” (minus the quotes). This value must be used.
- Select the Connection > SSH sub-category and set the following:
- Remote command - Input “cms” (minus the quotes).
- Preferred SSH protocol version - Ensure that “2” is selected.
- Open the Connection > SSH sub-category and select its Auth sub-category to set following:
- Private key file for authentication - Click the Browse button to navigate to the associated Private key.
- Recommended: Return to the Session category, input a desired name in Saved Sessions (“CMShell Access,” for example) and click the Save button. This allows you to quickly load the session for connection in the future.
- Click Open to launch the session in a separate session window.
- If you have established a Key Passphrase for the SSH Key pair, input it in the session window.
With the connection open and resolved, you can now issue CMShell commands.
Access CMShell with an SSH client
Here is an example of an interactive login
In this example shows how to access the CMShell by including specific login information. After the login is resolved, you will be able to issue multiple commands.
ssh -t -i <Private-key> <Username>@<Domain Name Prefix>.ssh.upload.akamai.com cms
These variable values apply:
<Private-key>
: This is the full path to your private key.<Username>
: You must usesshacs
as the username. This is the case for all secure access methods in NetStorage.<Domain Name>
: This value followed by.ssh.upload.akamai.com
represents your full Upload Domain Name. You set up your domain name during creation of the target storage group.
Once this login is accepted, you will be free to launch multiple CMShell commands, as desired.
Here is an example of single command execution
In this example, we show you how to access the CMShell by including specific login information within an individual command. (This allows you to login and issue a single command.)
ssh <Username>@<Domain Name Prefix>.ssh.upload.akamai.com <command line>
The following variable values apply:
<Username>
: When providing the Username, the valuesshacs
must be used. (This is the case for all Secure Access Methods in NetStorage.)<Domain Name Prefix>
: This value followed by.ssh.upload.akamai.com
represents your full Upload Domain Name. You set up your Domain Name during creation of the target storage group.<command line>
: The single command you wish to execute.
CMShell command syntax
Syntax basics
Syntax, Objects, and Variables | Description | ||||
---|---|---|---|---|---|
Elipses (“... ”) | This indicates that the component that precedes it can be repeated. For example, multiple instances of the component can be provided to, include multiple sources for moving, copying or deleting. | ||||
Square Brackets (“ [ ] ”) | The content within must be included in square brackets. In some instances, an individual component must exist in a single set of brackets ([-a] ), while in others, multiple components can be included in a single set ([-aldc] ). Unless specifically noted in a command’s description, only a single option/component can be included in a set of square brackets. | ||||
Angle Brackets (“ < > ”) | Unless specifically noted in the description of a command, angle brackets indicate a variable value that you must provide. In these cases, the < > characters are not included in the syntax. | ||||
Paths | Any path in the syntax targeting a storage group must be prefaced by the appropriate numeric “CP Code Root.” This is represented as “123456” in these examples.
Regarding Option Formats | With some options, you can achieve the same result by inputting the short or long format. A command may be revealed options as follows: |
Wildcard Support | CMShell supports the following wildcards: |
|
Command responses
Once a CMShell command is issued, one of three responses will be returned after processing:
Response | Description |
---|---|
“0” | This indicates the command was executed successfully. |
“1” | An error has occurred. Check that the syntax of the command was formatted properly, and re-issue it. If issues still arise, contact Technical Support. |
“255” | The SSH connection has failed. Verify that you are properly connected via SSH, and try again. |
CMShell commands
The az2z command
This command creates a Serve from Zip compatible zip archive.
Use this command to rewrite a ZIP archive file to Serve from Zip file format (which will verify the file’s integrity and create a hash table for it). The “<FILE>
” variable should be set to the complete path and filename for the target file.
az2z <OPTION> <FILE>
Option | Description |
---|---|
-h, --help | Display help information for this command. |
The “cat” command
Use this command to concatenate a file or files and display the result; or concatenate multiple files into a single output file.
cat <OPTION> <FILE>...
Option | Description |
---|---|
-h, --help | Display help information for this command. |
Example: Concatenate one or more files
Include one or more instances of the <FILE>
parameter, setting each to the complete path and file name to the desired file for concatenation. Resulting concatenated files will be housed in the current active directory.
cat <FILE> <FILE>...
cat /123456/file01 /123456/file02
Example: Concatenate multiple files into a single output file
If you need to process several files as one and save the results of such processing to a single output file, this command can be applied. Include one or more instances of the <FILE>
variable, setting each to the complete path and filename for the desired file, and set the <OUTPUTFILE>
variable to a desired path and filename for the resulting concatenated output file.
cat <OPTION> <FILE1> <FILE2> <FILE3>... > <OUTPUTFILE>
cat /123456/file01 /123456/file02 /123456/file03 > /123456/completed/output_file
With this instance of the command, you must use the right angle bracket (
>
) within the syntax. The final path/file to be concatenated must be followed by a single whitespace, the>
, a second whitespace, and finally the filename of the concatenated file. All other instances of< >
in the example that follows indicate a variable value.
The “cd” command
Use this command to change to a different remote directory.
Specify the full path to the desired directory as the “<DIRECTORY>
” variable.
cd <DIRECTORY>
While not specifically “options,” these features are also available:
- Include
cd
standalone to return to your established root directory. - Include a whitespace followed by two periods to jump up a level in the directory tree (For example,
cd ..
)
cd <DIRECTORY>
cd /123456/secondary
The “cp” command
Use this command to copy one or more files or directories.
To copy a file, include any “<OPTION
” variables along with the “<SOURCE>
” path and filename of the file to copy. You can include multiple “<SOURCE>
” file entries with a whitespace. Include the "<DIRECTORY>
” for the file destination.
cp <OPTION> <SOURCE> <DIRECTORY>
Option | Description |
---|---|
-i, --interactive | Ask before overwriting existing files. |
-p, --preserve | Copy the attributes for each file, as well. |
-r | Use recursion, creating files from non-directories. |
-v, --verbose | Display the operation’s execution step by step. |
-h, --help | Display help information for this command. |
You can use absolute or relative paths, so long as they resolve within the same top-level directory.
Example: Copy two files from a test directory into a release directory while preserving their attributes
cp <OPTION> <SOURCE> <DIRECTORY>
cp -p /123456/test/movie1.mp4 /123456/test/movie2.mp4 /123456/release/
Operations are restricted to existing directory trees
Your destination
<DIRECTORY>
must use a pre-existing path, as this command doesn't create a non-existent directory. For example, because the “non-existent” directory doesn't exist, this command will fail:cp /123456/movie.mp4 /123456/non-existent/
The “debug” command
While shown as available via the command interface, this command is currently not supported for use.
The “du” command
Use this command to estimate how much disk space each specified file or subdirectory uses.
Specify one or more individual files or sub-directories by including the complete path to the desired item as a “<FILE or SUBDIRECTORY>
” variable. Separate each entry with a whitespace. Output will summarize each “<FILE or SUBDIRECTORY>
” variable entry as disk usage in bytes.
du <OPTION>... <FILE or SUBDIRECTORY>...
Option | Description |
---|---|
--block-size=<size> | Use a block size other than the default. |
-f | Include the number of files inside subdirectories. |
-S, --separate-dirs | Omit subdirectory sizes. |
-s, --summarize | Display totals for the specified file(s) and/or subdirectory(ies) only. |
--max-depth=<#> | Display totals for the specified file(s) and/or subdirectory(ies), and also for any subdirectories if they are within <#> sublevels of any specified directory. |
-h, --help | Display help information for this command. |
Example: Target a subdirectory and file
The --max-depth=<#>
option is incorporated to set the maximum sub-directory depth to four.
du <OPTION>... <FILE or SUBDIRECTORY>...
du --max-depth=4 /123456/test/movie1.mp4 /123456/test/primary
NetStorage supports a limited set of options for this command. NetStorage doesn’t support command options not listed here.
The “exit” command
Use this command to terminate the CMShell session.
exit
There are no options available with this command.
The “help” command
Use this command to display CMShell help.
Issued standalone (help
), a list of available CMShell commands will be displayed. Include the name of a specific CMShell command as the “<COMMAND>
” variable (for example, help unzip
), and any available help for the specified command will be revealed.
help <COMMAND>
There are no additional options available for use with this command.
The “hostname” command
Use this command to display the IP address of the remote machine.
hostname
There are no additional options available for use with this command.
Example: Display the IP of the remote machine
hostname
[writingteam /]$ hostname
72.246.17.108
The “ln” command
Use this command to create a symbolic link to a file or a directory.
NetStorage doesn't support the creation of hard links. When using the ln
command in CMShell, creation of a symlink is implied. (The -s
option is applied by default.) A symbolic link is a file that points to another file, much like a shortcut. You can point a symlink to a file, directory, or both.
ln <OPTION> <TARGET> <LINKNAME>
Option | Description |
---|---|
-f, --force | Unlink the target file if it already exists, so that the link may occur. (The -f option overrides any previous -i options.) |
-n, --no-dereference | Treat LINKNAME as a normal file if it's a symbolic link to a directory. |
-s, --symbolic | Create symbolic links instead of hard links. This is applied by default. |
-v, --verbose | Display the operation’s execution step by step. |
-h, --help | Display help information for this command. |
Example: Target a single file and directory for symlink creation
ln <OPTION> <TARGET> <LINKNAME>
ln -v /123456/videos/movie.mp4 /123456/videos/subtitles /123456/symlinks
Example: Create a symlink to a single file
Include a single “<TARGET>
” variable, defining it as the complete path to a desired file. The system will create a symbolic link using the value defined as the "<LINKNAME>
" variable.
To create a symlink in your current directory for a file located at /123456/videos/movie.mp4
called symlink.mp4
, view the Example CMShell command tab.
The targeted /123456/videos/movie.mp4
file is accessible by using the new symlink located at /123456/symlink.mp4
. Performing a list (ls -l
) shows the symlink relationship to the target as shown in the Example list output tab.
ln <OPTION> <TARGET> <LINKNAME>
ln -v /123456/videos/movie.mp4 symlink.mp4
[123456]$ ln -v /123456/videos /123456/symlinks
create symbolic link /123456/symlinks to /123456/videos
[123456]$ ls -l
lrwxrwxrwx storageGroup storage 24 Mar 26 20:43 symlink.mp4 -> /123456/videos/movie.mp4
drwxrwxr-x storageGroup storage 0 Mar 26 20:21 videos
Example: Create a symlink to a single directory
Include a single “<TARGET>
” variable, defining it as the complete path to a desired directory. The system will create a symbolic link using the value defined as the "<LINKNAME>
" variable.
When you create a symlink to a directory, it will display all content of the target directory. To create a symlink in your current directory for a directory located at /123456/videos
, view the Example CMShell command tab.
You can access all files in the targeted directory by using the new symlink directory.
ln <OPTION> <TARGET> <LINKNAME>
ln -v /123456/videos /123456/symlinks
[123456]$ ln -v /123456/videos /123456/symlinks
create symbolic link /123456/symlinks to /123456/videos
[123456]$ ls -l
lrwxrwxrwx storageGroup storage 14 Mar 26 21:07 symlinks -> /123456/videos
drwxrwxr-x storageGroup storage 0 Mar 26 20:21 videos
[symlinks]$ ls -l
-rw-rw-r-- storageGroup storage 78612 Mar 26 20:08 movie.mp4
Example: Create a symlink to multiple targets
Include multiple “<TARGET>
” variables — defining each as the complete path to a desired file or directory, for which individual symbolic links will be created, and placed in the path named for the “<DIRECTORY>
” variable.
ln <OPTION> <TARGET> <TARGET> <DIRECTORY>
ln -v /123456/videos/movie.mp4 /123456/videos/subtitles /123456/symlinks
123456]$ ln -v /123456/videos/movie.mp4 /123456/videos/subtitles /123456/symlinks
create symbolic link /123456/symlinks/movie.mp4 to /123456/videos/movie.mp4
create symbolic link /123456/symlinks/subtitles to /123456/videos/subtitles
/123456/symlinks$ ls -l
lrwxrwxrwx storageGroup storage 24 Mar 26 21:41 movie.mp4 -> /123456/videos/movie.mp4
lrwxrwxrwx storageGroup storage 24 Mar 26 21:41 subtitles -> /123456/videos/subtitles
The “ls” command
Display the contents of a directory.
This command is used to display the contents of a directory, where the“
`” variable should be populated with the complete path to the desired directory.
ls <OPTION>... <PATH>...
Option | Description |
---|---|
-l, --list | Include additional file information (e.g., permissions and ownership). |
-Q, --quote-name | Place entry names in double quotes. |
-r, --reverse | Sort in reverse order. |
-S | Use file size to sort the list. |
-t | Use modification time to sort the list. |
-U | Leave the list unsorted and display the contents in directory order. |
-X | Use entry extension to sort alphabetically. |
-h, --help | Display help information for this command. |
ls <OPTION>... <PATH>...
ls --list -S /123456/test /123456/new
The “md5sum” command
The md5sum command performs a raw byte analysis to display the MD5 digest for one or more files.
The “ <FILE>
” variable should include the complete path and filename for the target file. This command doesn't provide a hash digest for symlink directories.
md5sum <OPTION> <FILE>...
Option | Description |
---|---|
-r | Execute the command recursively. |
-h, --help | Display help information for this command. |
Example: Display the MD5 digest for a single file
md5sum <OPTION> <FILE>...
[123456 /]$ md5sum /videos/movie.mp4
[123456 /]$ md5sum /videos/movie.mp4
d81f21f9d0ac51621cad3de05ff734c6 /videos/movie.mp4
If you run this command after [The “az2z” Command] (This command creates a Serve from Zip compatible zip archive."), its hash will differ from that of your local version.
The "mkdir" command
Use this command to create one or more new directories.
Include one or more instances of the <DIRECTORY> variable (separating each with a whitespace), and set each to the complete path to the new directory to create.
mkdir <OPTION> <DIRECTORY>...
Option | Description |
---|---|
-p | If parent directories in the specified path do not exist, automatically generate them to accommodate (and do not generate an error). |
-v | Display the operation's execution step by step. |
-h , --help | Display help information for this command. |
The
-p
and-v
options can't be used together.
Your CMShell directory structure
Your upload account name and default upload directory CP code determine your root directory. When you connect to CMShell, your base directory will appear as [uploadAccountName]
, displaying the upload account that's connected. On the back-end, it translates to the associated upload directory code.
If directories within a named path don't exist, an error will be generated. To have CMShell automatically create non-existent directories in a path, be sure to include the -p or --parents option.
Example: Create a directory
In this example, the verbose -v
option is included, and [writingteam /]
is the root folder for the upload account named writingteam
.
mkdir <OPTION> <DIRECTORY>...
[writingteam /]$ mkdir -v films
mkdir: created directory `films'
Example: Create a nested directory
Example creation of nested directory structure. The -p
option will create any folders that don't already exist. This example combines mkdir
with the -p
option.
[writingteam /]$ mkdir -p /tv/shows/
The "mv" command
Use this command to rename a single file, or move a single/multiple files.
With this command these points apply:
- Any directory named within a path for a rename or move must preexist. CMShell will not automatically create non-existent directories. If applicable, see The "mkdir" command for details on creating a directory.
- Only files can be targeted as a
<SOURCE>
for a Rename/Move. Directories and sub-directories cann't be renamed or moved.
mv <OPTION>... <SOURCE> <DESTINATION>
Option | Description |
---|---|
-i, --interactive | Ask before overwriting existing files. |
-v | Display the operation's execution step by step. |
-h , --help | Display help information for this command. |
Example: Rename a file
To rename a file, set the complete path and filename of the target file as the <SOURCE>
variable, and include the desired path and new filename as the <DESTINATION>
variable. The path set within the <DESTINATION>
variable can either be the existing path, to keep the file in the same directory; or a new path, in order to also move the renamed file.
In this example the file movie.mp4
is renamed to movie_old.mp4
with the mv
command.
mv <OPTION>... <SOURCE> <DESTINATION>
mv -i /123456/test/movie.mp4 /123456/test/movie_old.mp4
Example: Move a file
To move a file, set the <SOURCE>
variable to the complete path and filename of the file to be moved, and set the <DIRECTORY>
variable to the path to which the file is to be moved. Multiple <SOURCE>
file entries can be included to move multiple files (separating each with a whitespace), with the final path in the syntax existing as the <DIRECTORY>
to which the files will be moved.
In this example, two files, movie.mp4
and movie1.mp4
are moved to a new
directory, preserving their filenames.
mv <OPTION>... <SOURCE>... <DIRECTORY>
mv -v /123456/test/movie.mp4 /123456/test/movie1.mp4 /123456/new/
The “pwd” command
Use this command to display the path of the current remote directory.
pwd
Option | Description |
---|---|
N/A | There are no options for this command. |
Example: Show the present working directory
This example displays the present working directory, when the current directory is movies
.
pwd
[writingteam movies]$ pwd
/movies
The "rm" command
Use this command to delete one or more files or directories.
Include one or more instances of the <FILE>
variable, separating each with a whitespace, and set it to the complete path to be deleted. Each <FILE>
variable can be either of these:
- End with a directory. This will delete it, as well as all of its associated contents. This includes all sub-directories and file contents.
- End with a specific filename. This will delete an individual file.
rm <OPTION>... <FILE>...
Option | Description |
---|---|
-f, --force | This is applicable if you have defined a list of separate <FILE> entries and one (or more) among them does not exist. The removal will continue without prompting you. To use in conjunction with -r , quick-delete must be enabled. |
-i, --interactive | Ask before removing files. If targeting a complete directory for deletion it is recommended that you incorporate “interactive” mode as an option, to avoid inadvertently deleting a wanted file. Additionally, when enabled, your confirmation response must begin with “ y” or “ Y”, otherwise the file will be skipped. |
-r, --recursive | This option performs a "quick-delete" to remove content recursively. Review quick-delete considerations when using this option. |
-v, --verbose | Display the operation’s execution step by step. |
-h, --help | Display help information for this command. |
Example: Delete a single file and directory
This example targets a single file and an empty directory for deletion.
rm <OPTION>... <FILE>...
rm --interactive /123456/test/movie_old.mp4 /123456/old/
The “rmdir” command
Use this command to delete empty directories.
Include one or more instances of the <DIRECTORY>
variable (separating each with a whitespace), and set each to the complete path to the directory to be removed.
Targeted directories must be empty to use this command
The default
rmdir
command requires the directory to be empty.
rmdir <OPTION> <DIRECTORY>...
Option | Description |
---|---|
-v, --verbose | Display the operation’s execution step by step. |
-h, --help | Display help information for this command. |
--quick_delete=imreallyreallysure | Remove a directory and all of its contents. |
Remove a directory and all of its contents
To permanently remove a directory and all of its contents, you must enable quick-delete and use the
--quick_delete=imreallyreallysure <path>
option.
Example: Remove two empty directories
This example removes the movies
and tv
directories.
rmdir <OPTION> <DIRECTORY>...
rmdir /123456/movies 123456/tv
rmdir --quick_delete=imreallyreallysure /123456/movies
[writingteam /]$ rmdir --quick_delete=imreallyreallysure movies
quick_delete for "movies" Error: Permission denied
The “stat” command
Use this command to display information on one or more files, or a file system.
stat <OPTION> <FILENAME> [<FILENAMES>...]
Option | Description |
---|---|
-h, --help | Display help information for this command. |
Example: Stat of a single file
This example performs a stat
of the movie.mp4
file.
stat <OPTION> <FILENAME>
[writingteam movies]$ stat movie.mp4
File: movie.mp4
Size: 41392
Filetype: File
Mode: (0664/-rw-rw-r--)
Uid: writingteam
Gid: storage
Modify: Tue Jun 9 23:28:59 2020
Md5sum: d81f21f9d0ac51621cad3de05ff734c6
Example: Stat of a directory
This example performs a stat
for the films
directory.
stat <OPTION> <DIRECTORY>
[writingteam]$ stat films
File: films
Size: 0
Filetype: Directory
Mode: (0775/drwxrwxr-x)
Uid: writingteam
Gid: storage
Modify: Fri Dec 11 17:36:28 2020
Md5sum: -
The “wget” command
Use this command to download files from remote servers.
This command allows you to perform an immediate download of content from one or more specified <URL>
entries, to the currently active directory. Prior to initiating this call, use either the cd
command to navigate to an existing directory; or use the mkdir
command to create a new directory and then use the cd
command to access it.
wget <OPTION>... <URL>...
Available options
The <OPTION>
variable displayed in the above example can be populated with one or more of the following options:
Option | Description |
---|---|
Startup | Use these options for the startup phase. |
-B, --base=<URL> | When a wget download is initiated using both the -F and -i options, a specific file of URLs is targeted, and the format of that file is to be read as HTML. Include this option and specify a desired <URL> to be pre-pended to relative links found in this file, if applicable. |
-h, --help | Display in-line Help for the call. |
Logging and Input File | Use these options to specify log and input files. |
-F, --force-html | Include this in addition to the -i option to denote that its targeted <FILE> should be treated as HTML format. |
-i, --input-file=<FILE> | Download from a list of URLs specified in a file input as the <FILE> variable. This file must exist on the local system. Ensure that the complete path to the this file, including file name and extension are included. |
-o, --output-file=<FILE> | Include to have log messages saved to the named <FILE> . (Ensure that you include the appropriate extension.) |
-q, --quiet | When included, no output will be generated. |
-v, --verbose | Display the operation’s execution step by step. |
Download | These options are for download operations. |
--connect-timeout=<#> | Set the <#> variable to a value, in seconds that should serve as a connection timeout. |
--dns-timeout=<#> | Set the <#> variable to a value, in seconds that should serve as a DNS timeout. |
--escape-filename-ctrl | Include this option to escape control characters in targeted filenames. |
--limit-rate=<RATE> | To set a download rate limit, include this option and set the <RATE> variable to a desired rate (in Mbps) |
-N, --timestamping | When this option is included, files will not be retrieved if their timestamp is older than that of an existing instance of the file. |
--no-clobber | Do not overwrite existing files. |
-O, --output-document=<FILE> | Include output information in a file specified as the <FILE> variable. |
-Q, --quota=<#> | Include this to set a file retrieval quota to a specific number, defined as the <#> variable. |
--password=<PASSWORD> | Include this (along with the --user option) and set its variable to the appropriate password if username/password values are required to access content at the specified URL. |
--random-wait | Include to set a random wait time between retrievals -- from 0-2 seconds. |
--read-timeout=<#> | Set the <#> variable to a value, in seconds that should serve as a read timeout. |
--retry-connrefused | Include this option to attempt a retry if the connection is refused. |
-S, --server-response | Include this option to have the server response displayed for each retrieval. |
--spider | Include this option do block all downloading (i.e., if you wish to use other options to review information). |
-T, --timeout=<#> | Include this option to define a read timeout. Set the <#> variable to the desired time, in seconds. |
-t, --tries=<#> | Set the <#> variable to the number of retries that should be attempted before reporting a failure (“0” = unlimited) |
--user=<USER> | Include this option and set its variable to the appropriate user name if username/password values are required to access content at the specified URL. |
--upload-quota=<#> | Include this option to define a <#> to serve as the maximum quota of uploads. (The default = 1,000,000.) |
-w, --wait=<#> | Include this option and set the <#> variable to define a wait time between retrievals, in seconds. |
--waitretry=<#> | Include this option and set the <#> variable to define a wait time between retries of a retrieval, in seconds. |
Directories | These options control directory handling. |
-nd, --no-directories | When included, directories will not be created. All files captured in the wget will be copied directly in to the active directory. |
-nH, --no-host-directories | When included, host directories will not be created. |
-P, --directory-prefix-<PREFIX> | When included, files will be saved to a subdirectory of the active directory. Define this sub-directory using the <PREFIX> variable). |
-x, --force-directories | Include to force the creation of directories. Directory paths within the target URL will be automatically created in the active directory. |
--protocol-directories | Use the protocol name as a directory component of local file names. For example, with this option, ‘wget -r http://host’ will save locally as ‘http/host/<content>’ rather than just to ‘host/<content>’ |
--cut-dirs=number | Ignore number directory components. This can be combined with -nH to simplify directory depth. |
HTTP options | These options set how to handle various HTTP operations. |
--header-<STRING> | Include this value and define a <STRING> value to have this content included in headers located via the targeted URL. |
--http-passwd=<PASSWORD> | Set the HTTP password to the value set as the <PASSWORD> variable. |
--http-user=<USER> | Set the HTTP username to the value set as the <USER> variable. |
-E, --html-extension | Save HTML documents with an ".html" extension. |
--ignore-length | Ignore the Content-Length header. |
--ignore-robots | Include this option to ignore any “robots.txt” files and the “metatag”. |
--load-cookies=<FILE> | Load cookies from the target <FILE> before initiating any retrievals |
--load-regex=<FILE> | Follow URLs within the specified <FILE> that match regular expression. |
--no-cache | Include to block references to the local cache as a result of accessing the target URL. |
--no-check-certificate | Include to block the checking of local certificate files as a result of accessing the target URL. |
--no-cookies | Include to block the loading of any cookies as a result of accessing the target URL. |
--no-http-keep-alive | Include this option to disable persistent connections) |
--no-redirect-link | Include this option to disable the use of redirect links. |
--referer=<URL> | Include this and set the <URL> variable for use as an applicable referer site |
--save-cookies=<FILE> | Save all cookies to a specific file, named as the <FILE> variable. This file will be saved in the active directory along with the wget content. |
--save-headers | Include this option to have headers in target content saved. They will be saved in the active directory along with the wget content. |
FTP options | These options are available for FTP connections. |
--ftp-password=<PASSWORD> | To utilize FTP to process the wget include the applicable FTP password necessary to access the content. |
--ftp-user=<USER> | To utilize FTP to process the wget include the applicable FTP password necessary to access the content. |
-g, --glob=<ON/OFF> | Include and set the variable to ON to turn on file name globbing. By default, “globbing” with wget is set to OFF.Note: While this is supported, be aware the sequence of the resulting output is not guaranteed to be in an expected (alphanumeric) order. |
--passive-ftp | Include this option to set the transfer mode to “passive”. Default FTP mode is “active”. |
--retr-symlinks | If incorporating any of the Recursive Retrieval options, include this option for FTP to download linked-to files rather than directories. |
Recursive Retrieval | These options specify recursive traversal. |
-r, --recursive | When included, the wget will recursively traverse subdirectories in order to obtain all content.Note: By default, the maximum recursion depth for this option is ten levels from the target directory ( /<TARGET>/1/2/3/4/5/6/7/8/9/10 ). To deviate from this default, include the -L , --LEVEL=<#> option to specify the desired depth. |
-k, --convert-links | Include this option to convert non-relative links to relative. |
-K, --backup-converted | When converting a file, back up the original version with a ‘.orig’ suffix. Affects the behavior of ‘-N’ Time-Stamping. |
-l, --level=<#> | Limit recursion depth to a specific number of levels, by setting the <#> variable to the desired number. |
-m, --mirror | This is used to perform a “mirror” copy of the target directory. This option turns on recursion and time-stamping, defaults to a recursion depth of ten levels ( <target directory>/1/2/3/4/5/6/7/8/9/10 ) and keeps FTP directory listings.Note: To deviate from the default ten level recursion depth, include the -L , --LEVEL=<#> option to specify the desired depth. |
-p, --page-requisites | Include this option to ensure that all files required to properly display a targeted HTML file are also included (images, scripts, etc.). |
-z, --convert-absolute | Include this option to convert non-absolute links to absolute. |
Recursive Accept/Request | All of the options discussed here only apply if the -r (or --recursive ) Recursive Retrieval option has been included with this command. |
-A, --accept=<LIST> | When using recursion, you can specify specific file extensions for file formats you wish included in the wget and all other file formats will be ignored. Set the <LIST> variable to a comma-separated list of desired extensions, with no whitespaces between each entry. For example, -A=htm, jpg,mp4 could be input to include only these file formats. |
-R, --reject=<LIST> | When using recursion, you can specify specific file extensions for file formats you wish excluded from the wget and all other file formats will be included. Set the <LIST> variable to a comma-separated list of desired extensions, with no whitespaces between each entry. For example, -A=htm, jpg,mp4 could be input to specifically exclude these file formats. |
-D, --domains-<LIST> | Set the <LIST> variable to a comma separated list of domains that should be included in the wget , and only these domains will be included. |
--exclude-domains=<LIST> | Set the <LIST> variable to a comma separated list of domains that should be excluded from the wget . |
--follow-tags=<LIST> | Set the <LIST> variable to a comma separated list of HTML tags that correspond to content that should be included in the wget . |
--follow-ftp | When included, FTP links within targeted HTML content will be found (and the content there will be included in the wget as well). |
-G, --ignore-tags=<LIST> | Set the <LIST> variable to a comma separated list of HTML tags that correspond to content that should be excluded from the wget . |
-H, --span-hosts | When included, recursion will traverse links to foreign locations (and include content from those locations in the wget ). |
-I, --include-directories=<LIST> | Set the <LIST> variable to a comma-separated list of specific directories that should be allowed for inclusion. |
-L, --relative | Include this option to have recursion only include content from relative links. |
--no-parent | When included, the recursion of directories will not ascend to the parent directory. |
-X, --exclude-directories=<LIST> | Set the <LIST> variable to a comma-separated list of specific directories that should be blocked from inclusion. |
The “unzip” command
Use this command to perform various operations on a ZIP archive file’s contents.
The “<ZIPFILE>
” variable is the complete path and filename of the Zip file to be targeted, while the “ <FILE-or-DIRECTORY>
” variable should be the file or directory that will be the target of the operation. This is all based on the selected “ <OPTIONS>
” and “ <MODIFIERS>
” set.
unzip <OPTIONS> [MODIFIER] <ZIPFILE> [<OPTIONS>] <FILE_or_DIRECTORY>
Only a single hyphen (
-
) is required when calling out more than one option (e.g.,-fldv
would be set to include the-f, -l, -d
and-v
options in a single command.
Option | Description |
---|---|
-f | Uncompress only files that pre-exist on the disk and that are updated, use them to refresh the existing files, and if the files do not pre-exist, do not uncompress them and create them on the disk. |
-l | Display the ZIP archive file’s contents using a shortened format. |
-d | Uncompress files to directory. |
-p | Display the contents of all files contained in the ZIP archive file using binary format. |
-t | Check the ZIP archive file’s contents for errors. |
-u | Uncompress all files, updating existing ones, and creating new ones as necessary. |
-v | Display the ZIP archive file’s contents using the verbose (long) format. |
-x | Do not extract the file or files that follow. |
-z | Show the comment in the ZIP archive file, if present. |
-h, --help | Display help information for this command. |
Available modifiers
The <MODIFIER>
variable displayed in the above example can be populated with one of the following modifiers:
Modifier | Description |
---|---|
-a | If files are recognized as text, extract them as such, not as binary |
-aa | Extract all files in the archive as text files, regardless of whether they actually are |
-b | Extract all files as binary, regardless of whether they are text |
-C | Do not apply case-sensitivity when extracting files |
-j | Do not re-create the ZIP archive file’s directory structure when extracting files; extract all files to the working directory |
-L | If a file was created on an uppercase-only system, convert its file name to lowercase |
-LL | Convert all uppercase file names to lowercase |
-n | If files already exist, do not overwrite them |
-o | Do not prompt before overwriting files |
-q | Perform the operation quietly; do not display the operation’s step-by-step execution |
-qq | Perform the operation even more quietly than with -q |
-v | Display diagnostic information (used as unzip -v ) |
-X | Preserve user and group IDs |
Considerations when using "unzip"
- The unzip will take some time proportional to the number of files created.
- The original zip archive will remain uploaded to NetStorage.
- The standard zip32 archives supported are limited to 4,294,967,295 (2^32^-1) bytes and 65,535 (2^16^-1) files.
- Capabilities beyond the basic UNIX "unzip" are not supported.
For example, zip archives with encryption, bzip compression, and zip64 format are not supported.
You should try Serve from Zip
You might be able to serve your files from within an uploaded zip archive on NetStorage without unzipping it, by using Serve from Zip. Serve from Zip supports much larger files and the zip64 file format. If you can use it, you won't need to use this unzip command. See if the Serve from Zip considerations are compatible with your workflow.
Perform a "quick-delete"
A quick-delete allows you to target a specific directory in a storage group to swiftly and recursively delete all of its contents.
Before you use quick-delete
- Quick-delete needs to be activated before it's used.
- You use quick-delete with CMShell and the NetStorage Usage API
To perform a quick-delete you can use either the rmdir command or therm command with these options:
- rmdir:
rmdir --quick_delete=imreallyreallysure <path>
- rm:
rm -r
Once used, these operations will perform a recursive deletion of all content in the target directory. Review your target content before use.
Activate “quick-delete” for your storage group
The quick-delete setting is disabled by default to protect against inadvertent deletions of potentially unknown content. This setting is enabled in Control Center Control Center, on a per-storage group basis. It can be enabled during creation of a group or by editing an existing one.
The Quick Delete switch is available in the upload directories settings for a storage group
Accessing "quick-delete" via CMShell and the NetStorage Usage API are both configured here.
Considerations when using quick-delete
Review these points before enabling and using quick-delete:
- Newly uploaded content will not be deleted. If you have targeted a file with a quick-delete that hasn’t been deleted yet, and you upload a new version of the file that overwrites it, this new version will not be deleted.
- This feature is designed for large deletes. While it can be used to perform a recursive delete of any number of files, it is actually meant to be used when you have millions of objects to delete. You will see the best performance in this case.
- The
rmdir
andrm -r
options are the same with ObjectStore: Both methods can be used to perform a quick-delete in ObjectStore. - Quick delete must be activated.
- The actual deletion may take some time: The actual deletion occurs in the background with ObjectStore storage groups. If a large number of files have been targeted, the deletions may take a significant amount of time to complete.
- Objects targeted for quick delete may still be accessible. Taking the previous point into consideration, a targeted file or directory will exist until the deletion of that object can fully complete. Until the actual delete, it will still be accessible, and served if requested.
- Currently, there is no alert that a quick-delete has completed. Quick deletes take time, and this may be an issue. You can use the “
du
” command or the “ls
” command to view directories to check status. - “undeletion” is not supported. When performing a quick-delete from an ObjectStore storage group, targeted content cannot be recovered. Once issued, content will be permanently removed.
Updated almost 2 years ago