Official s3cmd repo -- Command line tool for managing Amazon S3 and CloudFront services

Overview

S3cmd tool for Amazon Simple Storage Service (S3)

Build Status

S3tools / S3cmd mailing lists:

S3cmd requires Python 2.6 or newer. Python 3+ is also supported starting with S3cmd version 2.

See installation instructions.

What is S3cmd

S3cmd (s3cmd) is a free command line tool and client for uploading, retrieving and managing data in Amazon S3 and other cloud storage service providers that use the S3 protocol, such as Google Cloud Storage or DreamHost DreamObjects. It is best suited for power users who are familiar with command line programs. It is also ideal for batch scripts and automated backup to S3, triggered from cron, etc.

S3cmd is written in Python. It's an open source project available under GNU Public License v2 (GPLv2) and is free for both commercial and private use. You will only have to pay Amazon for using their storage.

Lots of features and options have been added to S3cmd, since its very first release in 2008.... we recently counted more than 60 command line options, including multipart uploads, encryption, incremental backup, s3 sync, ACL and Metadata management, S3 bucket size, bucket policies, and more!

What is Amazon S3

Amazon S3 provides a managed internet-accessible storage service where anyone can store any amount of data and retrieve it later again.

S3 is a paid service operated by Amazon. Before storing anything into S3 you must sign up for an "AWS" account (where AWS = Amazon Web Services) to obtain a pair of identifiers: Access Key and Secret Key. You will need to give these keys to S3cmd. Think of them as if they were a username and password for your S3 account.

Amazon S3 pricing explained

At the time of this writing the costs of using S3 are (in USD):

$0.026 per GB per month of storage space used

plus

$0.00 per GB - all data uploaded

plus

$0.000 per GB - first 1GB / month data downloaded $0.090 per GB - up to 10 TB / month data downloaded $0.085 per GB - next 40 TB / month data downloaded $0.070 per GB - next 100 TB / month data downloaded $0.050 per GB - data downloaded / month over 150 TB

plus

$0.005 per 1,000 PUT or COPY or LIST requests $0.004 per 10,000 GET and all other requests

If for instance on 1st of January you upload 2GB of photos in JPEG from your holiday in New Zealand, at the end of January you will be charged $0.06 for using 2GB of storage space for a month, $0.0 for uploading 2GB of data, and a few cents for requests. That comes to slightly over $0.06 for a complete backup of your precious holiday pictures.

In February you don't touch it. Your data are still on S3 servers so you pay $0.06 for those two gigabytes, but not a single cent will be charged for any transfer. That comes to $0.06 as an ongoing cost of your backup. Not too bad.

In March you allow anonymous read access to some of your pictures and your friends download, say, 1500MB of them. As the files are owned by you, you are responsible for the costs incurred. That means at the end of March you'll be charged $0.06 for storage plus $0.045 for the download traffic generated by your friends.

There is no minimum monthly contract or a setup fee. What you use is what you pay for. At the beginning my bill used to be like US$0.03 or even nil.

That's the pricing model of Amazon S3 in a nutshell. Check the Amazon S3 homepage for more details.

Needless to say that all these money are charged by Amazon itself, there is obviously no payment for using S3cmd :-)

Amazon S3 basics

Files stored in S3 are called "objects" and their names are officially called "keys". Since this is sometimes confusing for the users we often refer to the objects as "files" or "remote files". Each object belongs to exactly one "bucket".

To describe objects in S3 storage we invented a URI-like schema in the following form:

s3://BUCKET

or

s3://BUCKET/OBJECT

Buckets

Buckets are sort of like directories or folders with some restrictions:

  1. each user can only have 100 buckets at the most,
  2. bucket names must be unique amongst all users of S3,
  3. buckets can not be nested into a deeper hierarchy and
  4. a name of a bucket can only consist of basic alphanumeric characters plus dot (.) and dash (-). No spaces, no accented or UTF-8 letters, etc.

It is a good idea to use DNS-compatible bucket names. That for instance means you should not use upper case characters. While DNS compliance is not strictly required some features described below are not available for DNS-incompatible named buckets. One more step further is using a fully qualified domain name (FQDN) for a bucket - that has even more benefits.

  • For example "s3://--My-Bucket--" is not DNS compatible.
  • On the other hand "s3://my-bucket" is DNS compatible but is not FQDN.
  • Finally "s3://my-bucket.s3tools.org" is DNS compatible and FQDN provided you own the s3tools.org domain and can create the domain record for "my-bucket.s3tools.org".

Look for "Virtual Hosts" later in this text for more details regarding FQDN named buckets.

Objects (files stored in Amazon S3)

Unlike for buckets there are almost no restrictions on object names. These can be any UTF-8 strings of up to 1024 bytes long. Interestingly enough the object name can contain forward slash character (/) thus a my/funny/picture.jpg is a valid object name. Note that there are not directories nor buckets called my and funny - it is really a single object name called my/funny/picture.jpg and S3 does not care at all that it looks like a directory structure.

The full URI of such an image could be, for example:

s3://my-bucket/my/funny/picture.jpg

Public vs Private files

The files stored in S3 can be either Private or Public. The Private ones are readable only by the user who uploaded them while the Public ones can be read by anyone. Additionally the Public files can be accessed using HTTP protocol, not only using s3cmd or a similar tool.

The ACL (Access Control List) of a file can be set at the time of upload using --acl-public or --acl-private options with s3cmd put or s3cmd sync commands (see below).

Alternatively the ACL can be altered for existing remote files with s3cmd setacl --acl-public (or --acl-private) command.

Simple s3cmd HowTo

  1. Register for Amazon AWS / S3

Go to http://aws.amazon.com/s3, click the "Sign up for web service" button in the right column and work through the registration. You will have to supply your Credit Card details in order to allow Amazon charge you for S3 usage. At the end you should have your Access and Secret Keys.

If you set up a separate IAM user, that user's access key must have at least the following permissions to do anything:

  • s3:ListAllMyBuckets
  • s3:GetBucketLocation
  • s3:ListBucket

Other example policies can be found at https://docs.aws.amazon.com/AmazonS3/latest/dev/example-policies-s3.html

  1. Run s3cmd --configure

You will be asked for the two keys - copy and paste them from your confirmation email or from your Amazon account page. Be careful when copying them! They are case sensitive and must be entered accurately or you'll keep getting errors about invalid signatures or similar.

Remember to add s3:ListAllMyBuckets permissions to the keys or you will get an AccessDenied error while testing access.

  1. Run s3cmd ls to list all your buckets.

As you just started using S3 there are no buckets owned by you as of now. So the output will be empty.

  1. Make a bucket with s3cmd mb s3://my-new-bucket-name

As mentioned above the bucket names must be unique amongst all users of S3. That means the simple names like "test" or "asdf" are already taken and you must make up something more original. To demonstrate as many features as possible let's create a FQDN-named bucket s3://public.s3tools.org:

$ s3cmd mb s3://public.s3tools.org

Bucket 's3://public.s3tools.org' created
  1. List your buckets again with s3cmd ls

Now you should see your freshly created bucket:

$ s3cmd ls

2009-01-28 12:34  s3://public.s3tools.org
  1. List the contents of the bucket:
$ s3cmd ls s3://public.s3tools.org
$

It's empty, indeed.

  1. Upload a single file into the bucket:
$ s3cmd put some-file.xml s3://public.s3tools.org/somefile.xml

some-file.xml -> s3://public.s3tools.org/somefile.xml  [1 of 1]
 123456 of 123456   100% in    2s    51.75 kB/s  done

Upload a two-directory tree into the bucket's virtual 'directory':

$ s3cmd put --recursive dir1 dir2 s3://public.s3tools.org/somewhere/

File 'dir1/file1-1.txt' stored as 's3://public.s3tools.org/somewhere/dir1/file1-1.txt' [1 of 5]
File 'dir1/file1-2.txt' stored as 's3://public.s3tools.org/somewhere/dir1/file1-2.txt' [2 of 5]
File 'dir1/file1-3.log' stored as 's3://public.s3tools.org/somewhere/dir1/file1-3.log' [3 of 5]
File 'dir2/file2-1.bin' stored as 's3://public.s3tools.org/somewhere/dir2/file2-1.bin' [4 of 5]
File 'dir2/file2-2.txt' stored as 's3://public.s3tools.org/somewhere/dir2/file2-2.txt' [5 of 5]

As you can see we didn't have to create the /somewhere 'directory'. In fact it's only a filename prefix, not a real directory and it doesn't have to be created in any way beforehand.

Instead of using put with the --recursive option, you could also use the sync command:

$ s3cmd sync dir1 dir2 s3://public.s3tools.org/somewhere/
  1. Now list the bucket's contents again:
$ s3cmd ls s3://public.s3tools.org

                       DIR   s3://public.s3tools.org/somewhere/
2009-02-10 05:10    123456   s3://public.s3tools.org/somefile.xml

Use --recursive (or -r) to list all the remote files:

$ s3cmd ls --recursive s3://public.s3tools.org

2009-02-10 05:10    123456   s3://public.s3tools.org/somefile.xml
2009-02-10 05:13        18   s3://public.s3tools.org/somewhere/dir1/file1-1.txt
2009-02-10 05:13         8   s3://public.s3tools.org/somewhere/dir1/file1-2.txt
2009-02-10 05:13        16   s3://public.s3tools.org/somewhere/dir1/file1-3.log
2009-02-10 05:13        11   s3://public.s3tools.org/somewhere/dir2/file2-1.bin
2009-02-10 05:13         8   s3://public.s3tools.org/somewhere/dir2/file2-2.txt
  1. Retrieve one of the files back and verify that it hasn't been corrupted:
$ s3cmd get s3://public.s3tools.org/somefile.xml some-file-2.xml

s3://public.s3tools.org/somefile.xml -> some-file-2.xml  [1 of 1]
 123456 of 123456   100% in    3s    35.75 kB/s  done
$ md5sum some-file.xml some-file-2.xml

39bcb6992e461b269b95b3bda303addf  some-file.xml
39bcb6992e461b269b95b3bda303addf  some-file-2.xml

Checksums of the original file matches the one of the retrieved ones. Looks like it worked :-)

To retrieve a whole 'directory tree' from S3 use recursive get:

$ s3cmd get --recursive s3://public.s3tools.org/somewhere

File s3://public.s3tools.org/somewhere/dir1/file1-1.txt saved as './somewhere/dir1/file1-1.txt'
File s3://public.s3tools.org/somewhere/dir1/file1-2.txt saved as './somewhere/dir1/file1-2.txt'
File s3://public.s3tools.org/somewhere/dir1/file1-3.log saved as './somewhere/dir1/file1-3.log'
File s3://public.s3tools.org/somewhere/dir2/file2-1.bin saved as './somewhere/dir2/file2-1.bin'
File s3://public.s3tools.org/somewhere/dir2/file2-2.txt saved as './somewhere/dir2/file2-2.txt'

Since the destination directory wasn't specified, s3cmd saved the directory structure in a current working directory ('.').

There is an important difference between:

get s3://public.s3tools.org/somewhere

and

get s3://public.s3tools.org/somewhere/

(note the trailing slash)

s3cmd always uses the last path part, ie the word after the last slash, for naming files.

In the case of s3://.../somewhere the last path part is 'somewhere' and therefore the recursive get names the local files as somewhere/dir1, somewhere/dir2, etc.

On the other hand in s3://.../somewhere/ the last path part is empty and s3cmd will only create 'dir1' and 'dir2' without the 'somewhere/' prefix:

$ s3cmd get --recursive s3://public.s3tools.org/somewhere/ ~/

File s3://public.s3tools.org/somewhere/dir1/file1-1.txt saved as '~/dir1/file1-1.txt'
File s3://public.s3tools.org/somewhere/dir1/file1-2.txt saved as '~/dir1/file1-2.txt'
File s3://public.s3tools.org/somewhere/dir1/file1-3.log saved as '~/dir1/file1-3.log'
File s3://public.s3tools.org/somewhere/dir2/file2-1.bin saved as '~/dir2/file2-1.bin'

See? It's ~/dir1 and not ~/somewhere/dir1 as it was in the previous example.

  1. Clean up - delete the remote files and remove the bucket:

Remove everything under s3://public.s3tools.org/somewhere/

$ s3cmd del --recursive s3://public.s3tools.org/somewhere/

File s3://public.s3tools.org/somewhere/dir1/file1-1.txt deleted
File s3://public.s3tools.org/somewhere/dir1/file1-2.txt deleted
...

Now try to remove the bucket:

$ s3cmd rb s3://public.s3tools.org

ERROR: S3 error: 409 (BucketNotEmpty): The bucket you tried to delete is not empty

Ouch, we forgot about s3://public.s3tools.org/somefile.xml. We can force the bucket removal anyway:

$ s3cmd rb --force s3://public.s3tools.org/

WARNING: Bucket is not empty. Removing all the objects from it first. This may take some time...
File s3://public.s3tools.org/somefile.xml deleted
Bucket 's3://public.s3tools.org/' removed

Hints

The basic usage is as simple as described in the previous section.

You can increase the level of verbosity with -v option and if you're really keen to know what the program does under its bonnet run it with -d to see all 'debugging' output.

After configuring it with --configure all available options are spitted into your ~/.s3cfg file. It's a text file ready to be modified in your favourite text editor.

The Transfer commands (put, get, cp, mv, and sync) continue transferring even if an object fails. If a failure occurs the failure is output to stderr and the exit status will be EX_PARTIAL (2). If the option --stop-on-error is specified, or the config option stop_on_error is true, the transfers stop and an appropriate error code is returned.

For more information refer to the S3cmd / S3tools homepage.

License

Copyright (C) 2007-2020 TGRMN Software - http://www.tgrmn.com - and contributors

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Comments
  • AWS4-HMAC-SHA256 Support

    AWS4-HMAC-SHA256 Support

    I'm trying to connect a bucket in the new eu-central-1 region (Frankfurt), but it seems it uses a newer authentication scheme that's not supported by 1.5.0-rc1:

    Please wait, attempting to list bucket: s3://mybucket
    WARNING: Redirected to: mybucket.s3.eu-central-1.amazonaws.com
    ERROR: Test failed: 400 (InvalidRequest):
    The authorization mechanism you have provided is not supported.
    Please use AWS4-HMAC-SHA256.
    

    Also note that the endpoint is named s3.eu-central-1.amazonaws.com (dot after s3 instead of dash).

    opened by felixbuenemann 79
  • "WARNING: Retrying failed request" when listing objects in a bucket

    When listing all the objects in a S3 bucket, the following WARNING is shown every time:

    WARNING: Retrying failed request: /?marker=100PENTX/IMGP0125.JPG () WARNING: Waiting 3 sec...

    In the end the listing does succeed, but this warning is given every time. Looks like it's something to do with a failed "next marker" request, the bucket contains more than 1000 files. After initial failure, it always succeeds.

    to-be-fixed 
    opened by matteobar 58
  • s3cmd modify command

    s3cmd modify command

    It would be super awesome to have something akin to a modify command that allowed changing the settings that are possible to set during upload but which don't seem to have a way to be modified later.

    For instance, I'd like to be able to set headers, switch to reduced redundancy, make public, etc. for JPGs that are already uploaded:

    s3cmd modify \
        --add-header='Cache-Control: public, max-age=31536000' \
        --reduced-redundancy \
        --cf-invalidate \
        --acl-public \
        --recursive \
        --exclude '*' \
        --include '*.jpg' \
        'foo' \
        s3://foo
    

    Unless I'm missing something these can be changed manually in the AWS Console, but not via s3cmd without a full delete and re-upload which may not be feasible.

    Thanks in advance and keep up the great work!

    opened by mckamey 52
  • SSL cert failure on buckets with a dot (.)

    SSL cert failure on buckets with a dot (.)

    Since updating Arch Linux, s3cmd fails to connect to any bucket with a dot (.) in its name:

    $ s3cmd info s3://buck.et
    WARNING: Retrying failed request: /?location (hostname 'buck.et.s3.amazonaws.com' doesn't match either of '*.s3.amazonaws.com', 's3.amazonaws.com')
    WARNING: Waiting 3 sec...
    WARNING: Retrying failed request: /?location (hostname 'buck.et.s3.amazonaws.com' doesn't match either of '*.s3.amazonaws.com', 's3.amazonaws.com')
    WARNING: Waiting 6 sec...
    

    This is because python 2.7.9 validates SSL certs by default. It exposes a general problem with Amazon's wildcard cert. Note the certificate failure by visiting anything like this in your browser: https://buck.et.s3.amazonaws.com/

    The solution may be to access things using this endpoint instead: https://s3.amazonaws.com/buck.et/

    opened by yardenac 31
  • ETag shouldn't be used for MD5 verification

    ETag shouldn't be used for MD5 verification

    This is connected with this issue I've filed for Minio: https://github.com/minio/minio/issues/4537

    s3cmd considers the ETag field to be the file's md5, but "the ETag may or may not be an MD5 digest of the object data" (see: http://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html ) This is causing issues with tools such as Minio in gateway mode: s3cmd put always fails with checksum errors.

    The --no-check-md5 option doesn't seem to work with the put command.

    feature-request 
    opened by ItalyPaleAle 25
  • s3cmd sync: Remote copy does not respect mime type

    s3cmd sync: Remote copy does not respect mime type

    Steps:

    1. Using s3cmd, upload a .js file to folder A, but force a mime type of text/plain
    2. Upload the same .js file to folder B, but allow s3cmd to automatically set the mime type

    Result: remote copy A/file.js -> B/file.js (md5 matches as expected). However B/file.js has mime type of text/plain.

    Expected: B/file.js exists with mime type application/javascript.

    Either the remote copy logic should take the mime type into account, setting the mimetype on the copied file, or remote copy should be disabled if the mime type of the source file and the mime type of the uploaded file differs. This bug causes a cascading problem where once a file is uploaded with an incorrect mime type, the only way to fix it is to either delete the source files to prevent further copying of bad mime types or manually go through all the files and update their mime types.

    Uploading a new file with the intended mime type should always result in that file being there with the specified mime type.

    to-be-fixed 
    opened by voidstardb 24
  • Multipart file upload error: sequence item 0: expected string, int found

    Multipart file upload error: sequence item 0: expected string, int found

    s3cmd version 1.5.2 - getting this when trying to upload a particular file (have tried twice):

    INFO: Compiling list of local files...
    INFO: Running stat() and reading/calculating MD5 values on 2861 files, this may take some time...
    INFO: [1000/2861]
    INFO: [2000/2861]
    INFO: Retrieving list of remote files for s3://xxx/Jamie/ ...
    INFO: Found 2861 local files, 2858 remote files
    INFO: Verifying attributes...
    INFO: Summary: 6 local files to upload, 0 files to remote copy, 0 remote files to delete
    WARNING: Retrying failed request: /Jamie/Devices/LiveCam%20Ultra/LCC_PCAPP_LA_2_02_07.exe?uploads ('')
    WARNING: Waiting 3 sec...
    INFO: Sending file '/share/homes/Jamie/Devices/LiveCam Ultra/LCC_PCAPP_LA_2_02_07.exe', please wait...
    INFO: Sending file '/share/homes/Jamie/Devices/LiveCam Ultra/LCC_PCAPP_LA_2_02_07.exe', please wait...
    INFO: Sending file '/share/homes/Jamie/Devices/LiveCam Ultra/LCC_PCAPP_LA_2_02_07.exe', please wait...
    INFO: Sending file '/share/homes/Jamie/Devices/LiveCam Ultra/LCC_PCAPP_LA_2_02_07.exe', please wait...
    WARNING: Retrying failed request: /Jamie/Devices/LiveCam%20Ultra/LCC_PCAPP_LA_2_02_07.exe?uploadId=0scAmwozIF8EcP1js1ot.SjmyPTMZZJwO5p6DfA1BoGfz9Pl3Mi90hL0SSQf5eNrLtUtrQp3GTYSZ_WDkQPOoxsIaKJ.xDsofQY_QZ8w1.1e_vidwqc986XweVcbnRgh (sequence item 0: expected string, int found)
    WARNING: Waiting 3 sec...
    WARNING: Retrying failed request: /Jamie/Devices/LiveCam%20Ultra/LCC_PCAPP_LA_2_02_07.exe?uploadId=0scAmwozIF8EcP1js1ot.SjmyPTMZZJwO5p6DfA1BoGfz9Pl3Mi90hL0SSQf5eNrLtUtrQp3GTYSZ_WDkQPOoxsIaKJ.xDsofQY_QZ8w1.1e_vidwqc986XweVcbnRgh (sequence item 0: expected string, int found)
    WARNING: Waiting 6 sec...
    WARNING: Retrying failed request: /Jamie/Devices/LiveCam%20Ultra/LCC_PCAPP_LA_2_02_07.exe?uploadId=0scAmwozIF8EcP1js1ot.SjmyPTMZZJwO5p6DfA1BoGfz9Pl3Mi90hL0SSQf5eNrLtUtrQp3GTYSZ_WDkQPOoxsIaKJ.xDsofQY_QZ8w1.1e_vidwqc986XweVcbnRgh (sequence item 0: expected string, int found)
    WARNING: Waiting 9 sec...
    WARNING: Retrying failed request: /Jamie/Devices/LiveCam%20Ultra/LCC_PCAPP_LA_2_02_07.exe?uploadId=0scAmwozIF8EcP1js1ot.SjmyPTMZZJwO5p6DfA1BoGfz9Pl3Mi90hL0SSQf5eNrLtUtrQp3GTYSZ_WDkQPOoxsIaKJ.xDsofQY_QZ8w1.1e_vidwqc986XweVcbnRgh (sequence item 0: expected string, int found)
    WARNING: Waiting 12 sec...
    WARNING: Retrying failed request: /Jamie/Devices/LiveCam%20Ultra/LCC_PCAPP_LA_2_02_07.exe?uploadId=0scAmwozIF8EcP1js1ot.SjmyPTMZZJwO5p6DfA1BoGfz9Pl3Mi90hL0SSQf5eNrLtUtrQp3GTYSZ_WDkQPOoxsIaKJ.xDsofQY_QZ8w1.1e_vidwqc986XweVcbnRgh (sequence item 0: expected string, int found)
    WARNING: Waiting 15 sec...
    ERROR: S3 Temporary Error: Request failed for: /Jamie/Devices/LiveCam%20Ultra/LCC_PCAPP_LA_2_02_07.exe?uploadId=0scAmwozIF8EcP1js1ot.SjmyPTMZZJwO5p6DfA1BoGfz9Pl3Mi90hL0SSQf5eNrLtUtrQp3GTYSZ_WDkQPOoxsIaKJ.xDsofQY_QZ8w1.1e_vidwqc986XweVcbnRgh.  Please try again later.
    
    opened by jamieburchell 24
  • Filenames/Foldernames are url encoded

    Filenames/Foldernames are url encoded

    I've recently updated to the latest master version, but now s3cmd reupload a lot of already existing files but as a url encoded name like:

    already existing: "/folder foo bar" new created folder: "/folder+foo+bar"

    the same happens to the files inside those folders.

    Any ideas how to fix it?

    opened by alex-LE 23
  • python3 compatibility

    python3 compatibility

    Hey, it would be great if we could make s3cmd py2 and py3 compatible. I've got an environment where I would like to use s3cmd, but don't have py2. I've started working on py3 compatibility here:

    https://github.com/fly/s3cmd/compare/py3ify

    any assistance, advice, or decision on mergeability of a py3-compat PR would be greatly appreciated!

    feature-request 
    opened by bsdlp 23
  • Error with multipart uploads on v1.1.0-beta3

    Error with multipart uploads on v1.1.0-beta3

    After running ./s3tools-s3cmd-13c7a62/s3cmd --no-progress --multipart-chunk-size-mb=512 put s3://

    I get the following :-

    [ec2-107-22-96-244.compute-1.amazonaws.com] out: [ec2-107-22-96-244.compute-1.amazonaws.com] out: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [ec2-107-22-96-244.compute-1.amazonaws.com] out: An unexpected error has occurred. [ec2-107-22-96-244.compute-1.amazonaws.com] out: Please report the following lines to: [ec2-107-22-96-244.compute-1.amazonaws.com] out: [email protected] [ec2-107-22-96-244.compute-1.amazonaws.com] out: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    [ec2-107-22-96-244.compute-1.amazonaws.com] out: Problem: KeyError: 'elapsed' [ec2-107-22-96-244.compute-1.amazonaws.com] out: S3cmd: 1.1.0-beta3

    [ec2-107-22-96-244.compute-1.amazonaws.com] out: Traceback (most recent call last): [ec2-107-22-96-244.compute-1.amazonaws.com] out: File "./s3tools-s3cmd-13c7a62/s3cmd", line 1800, in [ec2-107-22-96-244.compute-1.amazonaws.com] out: main() [ec2-107-22-96-244.compute-1.amazonaws.com] out: File "./s3tools-s3cmd-13c7a62/s3cmd", line 1741, in main [ec2-107-22-96-244.compute-1.amazonaws.com] out: cmd_func(args) [ec2-107-22-96-244.compute-1.amazonaws.com] out: File "./s3tools-s3cmd-13c7a62/s3cmd", line 309, in cmd_object_put [ec2-107-22-96-244.compute-1.amazonaws.com] out: (unicodise(full_name_orig), uri_final, response["size"], response["elapsed"], [ec2-107-22-96-244.compute-1.amazonaws.com] out: KeyError: 'elapsed'

    [ec2-107-22-96-244.compute-1.amazonaws.com] out: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [ec2-107-22-96-244.compute-1.amazonaws.com] out: An unexpected error has occurred. [ec2-107-22-96-244.compute-1.amazonaws.com] out: Please report the above lines to: [ec2-107-22-96-244.compute-1.amazonaws.com] out: [email protected] [ec2-107-22-96-244.compute-1.amazonaws.com] out: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    opened by danharvey 23
  • Support IAM roles / instance profiles

    Support IAM roles / instance profiles

    "roles" (aka "instance profiles"?) allow, among other things, an admin to give an EC2 instance read/write access to a particular S3 bucket. On an instance with the proper roles/permissions, an s3cmd configuration file is not necessary.

    • http://aws.typepad.com/aws/2012/06/iam-roles-for-ec2-instances-simplified-secure-access-to-aws-service-apis-from-ec2.html
    • https://forums.aws.amazon.com/thread.jspa?messageID=353318&tstart=0
    opened by meonkeys 22
  • s3 write speed is too slow - is there a way to speed it up ??  20 times slower than NFS file system transfer !! ugh !!

    s3 write speed is too slow - is there a way to speed it up ?? 20 times slower than NFS file system transfer !! ugh !!

    Hi I am new to s3 - moving from NFS to s3 but I am not happy with the write performance!!

    HOW can I speed it up ? some config parameter that move larger packages ? or is it your setup the hardware - ie hardware parameters ?

    Now s3: around 10MB/s vs our regular NFS filesystem 200MB/s ie 20 times slower !!!! ugh s3cmd version 2.1.0

    TEST upload: '' -> 's3://yetest/backups/si106-251/si106-251.20221219202432.tgz' [part 299, 15MB] 15728640 of 15728640 100% in 1s 8.45 MB/s done <------ 8.45MB/s

    opened by FFNye 0
  • `du` throws error when invoked with no buckets

    `du` throws error when invoked with no buckets

    Hello there.

    I removed all my buckets and then run s3cmd du. It showed me 0 Total, but also showed this:

    $ s3cmd du
    ------------
    0            Total
    
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        An unexpected error has occurred.
      Please try reproducing the error using
      the latest s3cmd code from the git master
      branch found at:
        https://github.com/s3tools/s3cmd
      and have a look at the known issues list:
        https://github.com/s3tools/s3cmd/wiki/Common-known-issues-and-their-solutions-(FAQ)
      If the error persists, please report the
      following lines (removing any private
      info as necessary) to:
       [email protected]
    
    
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    
    Invoked as: /usr/bin/s3cmd du
    Problem: <class 'UnboundLocalError: local variable 'size' referenced before assignment
    S3cmd:   2.3.0
    python:   3.6.8 (default, Nov 10 2022, 12:32:59)
    [GCC 8.5.0 20210514 (Red Hat 8.5.0-15.0.1)]
    environment LANG=C.UTF-8
    
    Traceback (most recent call last):
      File "/usr/bin/s3cmd", line 3286, in <module>
        rc = main()
      File "/usr/bin/s3cmd", line 3183, in main
        rc = cmd_func(args)
      File "/usr/bin/s3cmd", line 104, in cmd_du
        subcmd_bucket_usage_all(s3)
      File "/usr/bin/s3cmd", line 124, in subcmd_bucket_usage_all
        return size
    UnboundLocalError: local variable 'size' referenced before assignment
    
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        An unexpected error has occurred.
      Please try reproducing the error using
      the latest s3cmd code from the git master
      branch found at:
        https://github.com/s3tools/s3cmd
      and have a look at the known issues list:
        https://github.com/s3tools/s3cmd/wiki/Common-known-issues-and-their-solutions-(FAQ)
      If the error persists, please report the
      above lines (removing any private
      info as necessary) to:
       [email protected]
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    

    I'm not that good at Python, but I believe that it's due to fact that size variable is first assigned in the loop which does not cycle, because the response is empty:

    https://github.com/s3tools/s3cmd/blob/6f3e1baa667da53422f60bd941112e1f3a07662c/s3cmd#L107-L124

    It looks like the function should not return size at all and should return buckets_size instead 🤔

    opened by igoradamenko 0
  • Avoid unrecognized escape sequences

    Avoid unrecognized escape sequences

    https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals indicates that unrecognized escape sequences produce a DeprecationWarning and will eventually be a SyntaxError, so avoid them.

    opened by kraai 0
  • Getting SSLV3_ALERT_HANDSHAKE_FAILURE with Ubuntu 22.04/Python 3.10

    Getting SSLV3_ALERT_HANDSHAKE_FAILURE with Ubuntu 22.04/Python 3.10

    Hi,

    When using s3cmd on Ubuntu 22.04 and Python 3.10.6 I get:

    $ s3cmd ls s3://
    ERROR: SSL certificate verification failure: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:997)
    

    The S3 storage solution is in our case a S3 compatible solution (Hitachi Content Platform) and

    $ cat ~/.s3cfg
    [default]
    use_https = True
    
    access_key = ********
    secret_key = **************
    host_base = test.s3.mydomain.net
    host_bucket = test.s3.mydomain.net
    

    It works with Ubuntu 20.04 and Python 3.8.10. Any idea on how to get it working with Ubuntu 22.04/Python 3.10.6 ? Maybe related to this? https://bugs.python.org/issue43998

    opened by 4integration 0
  • access_token in config file provided with --config parameter is not setting _access_token_refresh to False

    access_token in config file provided with --config parameter is not setting _access_token_refresh to False

    I provided the access_token in a config file, and used the --config <FILE> parameter with s3cmd. I expected the presence of access_token parameter in the config file would disallow refreshing of the credentials by s3cmd itself. But the code I checked in Config.py seems to suggest otherwise. Making the variable _access_token_refresh to not able to be configured externally is another problem. I need a configuration parameter such that I can disable auto-refresh. Thanks!

    opened by kv83821-yb 0
Releases(v2.3.0)
  • v2.3.0(Oct 3, 2022)

    • Added "getnotification", "setnotification", and "delnotification" commands for notification policies (hrchu)
    • Added support for AWS_STS_REGIONAL_ENDPOINTS (#1218, #1228) (Johan Lanzrein)
    • Added ConnectionRefused [111] exit code to handle connection errors (Salar Nosrati-Ershad)
    • Added support for IMDSv2. Should work automatically on ec2 (Anthony Foiani)
    • Added --list-allow-unordered to list objects unordered. Only supported by Ceph based s3-compatible services (#1269) (Salar Nosrati-Ershad)
    • Fixed --exclude dir behavior for python >= 3.6 (Daniil Tararukhin)
    • Fixed Cloudfront invalidate retry issue (Yuan-Hsiang Lee)
    • Fixed 0 byte cache files crashing s3cmd (#1234) (Carlos Laviola)
    • Fixed --continue behavior for the "get" command (#1009) (Anton Ustyugov)
    • Fixed unicode issue with fixbucket (#1259)
    • Fixed CannotSendRequest and ConnectionRefusedError errors at startup (#1261)
    • Fixed error reporting for object info when the object does not exist
    • Fixed "setup.py test" to do nothing to avoid failure that could be problematic for distribution packaging (#996)
    • Improved expire command to use Rule/Filter/Prefix for LifecycleConfiguration (#1247)
    • Improved PASS/CHECK/INCLUDE/EXCLUDE debug log messages
    • Improved setup.py with python 3.9 and 3.10 support info(Ori Avtalion)
    • Many other bug fixes
    Source code(tar.gz)
    Source code(zip)
    s3cmd-2.3.0-py2.py3-none-any.whl(152.51 KB)
    s3cmd-2.3.0-py2.py3-none-any.whl.asc(833 bytes)
    s3cmd-2.3.0.tar.gz(133.54 KB)
    s3cmd-2.3.0.tar.gz.asc(833 bytes)
    s3cmd-2.3.0.zip(149.00 KB)
    s3cmd-2.3.0.zip.asc(833 bytes)
  • v2.2.0(Sep 27, 2021)

    • Added support for metadata modification of files bigger than 5 GiB
    • Added support for remote copy of files bigger than 5 GiB using MultiPart copy (Damian Martinez, Florent Viard)
    • Added progress info output for multipart copy and current-total info in output for cp, mv and modify
    • Added support for all special/foreign character names in object names to cp/mv/modify
    • Added support for SSL authentication (Aleksandr Chazov)
    • Added the http error 429 to the list of retryable errors (#1096)
    • Added support for listing and resuming of multipart uploads of more than 1000 parts (#346)
    • Added time based expiration for idle pool connections in order to avoid random broken pipe errors (#1114)
    • Added support for STS webidentity authentication (ie AssumeRole and AssumeRoleWithWebIdentity) (Samskeyti, Florent Viard)
    • Added support for custom headers to the mb command (#1197) (Sébastien Vajda)
    • Improved MultiPart copy to preserve acl and metadata of objects
    • Improved the server errors catching and reporting for cp/mv/modify commands
    • Improved resiliency against servers sending garbage responses (#1088, #1090, #1093)
    • Improved remote copy to have consistent copy of metadata in all cases: multipart or not, aws or not
    • Improved security by revoking public-write acl when private acl is set (#1151) (ruanzitao)
    • Improved speed when running on an EC2 instance (#1117) (Patrick Allain)
    • Reduced connection_max_age to 5s to avoid broken pipes as AWS closes https conns after around 6s (#1114)
    • Ensure that KeyboardInterrupt are always properly raised (#1089)
    • Changed sized of multipart copy chunks to 1 GiB
    • Fixed ValueError when using more than one ":" inside add_header in config file (#1087)
    • Fixed extra label issue when stdin used as source of a MultiPart upload
    • Fixed remote copy to allow changing the mime-type (ie content-type) of the new object
    • Fixed remote_copy to ensure that meta-s3cmd-attrs will be set based on the real source and not on the copy source
    • Fixed deprecation warnings due to invalid escape sequences (Karthikeyan Singaravelan)
    • Fixed getbucketinfo that was broken when the bucket lifecycle uses the filter element (Liu Lan)
    • Fixed RestoreRequest XML namespace URL (#1203) (Akete)
    • Fixed PARTIAL exit code that was not properly set when needed for object_get (#1190)
    • Fixed a possible infinite loop when a file is truncated during hashsum or upload (#1125) (Matthew Krokosz, Florent Viard)
    • Fixed report_exception wrong error when LANG env var was not set (#1113)
    • Fixed wrong wiki url in error messages (Alec Barrett)
    • Py3: Fixed an AttributeError when using the "files-from" option
    • Py3: Fixed compatibility issues due to the removal of getchildren() from ElementTree in python 3.9 (#1146, #1157, #1162, # 1182, #1210) (Ondřej Budai)
    • Py3: Fixed compatibility issues due to the removal of encodestring() in python 3.9 (#1161, #1174) (Kentaro Kaneki)
    • Fixed a crash when the AWS_ACCESS_KEY env var is set but not AWS_SECRET_KEY (#1201)
    • Cleanup of check_md5 (Riccardo Magliocchetti)
    • Removed legacy code for dreamhost that should be necessary anymore
    • Migrated CI tests to use github actions (Arnaud J)
    • Improved README with a link to INSTALL.md (Sia Karamalegos)
    • Improved help content (Dmitrii Korostelev, Roland Van Laar)
    • Improvements for setup and build configurations
    • Many other bug fixes
    Source code(tar.gz)
    Source code(zip)
    s3cmd-2.2.0-py2.py3-none-any.whl(150.26 KB)
    s3cmd-2.2.0-py2.py3-none-any.whl.asc(833 bytes)
    s3cmd-2.2.0.tar.gz(131.24 KB)
    s3cmd-2.2.0.tar.gz.asc(833 bytes)
    s3cmd-2.2.0.zip(146.72 KB)
    s3cmd-2.2.0.zip.asc(833 bytes)
  • v2.1.0(Apr 7, 2020)

    • Changed size reporting using k instead of K as it a multiple of 1024 (#956)
    • Added "public_url_use_https" config to generate public url using https (#551, #666) (Jukka Nousiainen)
    • Added option to make connection pooling configurable and improvements (Arto Jantunen)
    • Added support for path-style bucket access to signurl (Zac Medico)
    • Added docker configuration and help to run test cases with multiple Python versions (Doug Crozier)
    • Relaxed limitation on special chars for --add-header key names (#1054)
    • Fixed all regions that were automatically converted to lower case (Harshavardhana)
    • Fixed size and alignment of DU and LS output reporting (#956)
    • Fixes for SignatureDoesNotMatch error when host port 80 or 443 is specified, due to stupid servers (#1059)
    • Fixed the useless retries of requests that fail because of ssl cert checks
    • Fixed a possible crash when a file disappears during cache generation (#377)
    • Fixed unicode issues with IAM (#987)
    • Fixed unicode errors with bucked Policy/CORS requests (#847) (Alex Offshore)
    • Fixed unicode issues when loading aws_credential_file (#989)
    • Fixed an issue with the tenant feature of CephRGW. Url encode bucket_name for path-style requests (#1080)
    • Fixed signature v2 always used when bucket_name had special chars (#1081)
    • Allow to use signature v4 only, even for commands without buckets specified (#1082)
    • Fixed small open file descriptor leaks.
    • Py3: Fixed hash-bang in headers to not force using python2 when setup/s3cmd/run-test scripts are executed directly.
    • Py3: Fixed unicode issues with Cloudfront (#1006)
    • Py3: Fixed http.client.RemoteDisconnected errors (#1014) (Ryan Huddleston)
    • Py3: Fixed 'dictionary changed size during iteration' error when using a cache-file (#945) (Doug Crozier)
    • Py3: Fixed the display of file sizes (Vlad Presnyak)
    • Py3: Python 3.8 compatibility fixes (Konstantin Shalygin)
    • Py2: Fixed unicode errors sometimes crashing remote2remote sync (#847)
    • Added s3cmd.egg-info to .gitignore (Philip Dubé)
    • Improved run-test script to not use hard-coded bucket names(#1066) (Doug Crozier)
    • Renamed INSTALL to INSTALL.md and improvements (Nitro, Prabhakar Gupta)
    • Improved the restore command help (Hrchu)
    • Updated the storage-class command help with the recent aws s3 classes (#1020)
    • Fixed typo in the --continue-put help message (Pengyu Chen)
    • Fixed typo (#1062) (Tim Gates)
    • Improvements for setup and build configurations
    • Many other bug fixes
    Source code(tar.gz)
    Source code(zip)
    s3cmd-2.1.0-py2.py3-none-any.whl(142.36 KB)
    s3cmd-2.1.0-py2.py3-none-any.whl.asc(833 bytes)
    s3cmd-2.1.0.tar.gz(124.14 KB)
    s3cmd-2.1.0.tar.gz.asc(833 bytes)
    s3cmd-2.1.0.zip(138.83 KB)
    s3cmd-2.1.0.zip.asc(833 bytes)
  • v2.0.2(Jul 15, 2018)

    • Fixed unexpected timeouts encountered during requests or transfers due to AWS strange connection short timeouts (#941)
    • Fixed a throttle issue slowing down too much transfers in some cases (#913)
    • Added support for $AWS_PROFILE (#966) (Taras Postument)
    • Added clarification comment for the socket_timeout configuration value OS limit
    • Avoid distutils usage at runtime (Matthias Klose)
    • Python 2 compatibility: Fixed import error of which with fallback code (Gianfranco Costamagna)
    • Fixed Python 3 bytes string encoding when getting IAM credentials (Alexander Allakhverdiyev)
    • Fixed handling of config tri-state bool values (like acl_public) (Brian C. Lane)
    • Fixed V2 signature when restore command is used (Jan Kasiak)
    • Fixed setting full_control on objects with public read access (Matthew Vernon)
    • Fixed a bug when only one path is supplied with Cloudfront. (Mikael Svensson)
    • Fixed signature errors with 'modify' requests (Radek Simko)
    • Fixes #936 - Fix setacl command exception (Robert Moucha)
    • Fixes error reporting if deleting a source object failed after a move (#929)
    • Many other bug fixes (#525, #933, #940, #947, #957, #958, #960, #967)

    Important info: AWS S3 doesn't allow anymore uppercases and underscores in bucket names since march 1, 2018.

    Source code(tar.gz)
    Source code(zip)
    s3cmd-2.0.2-py3-none-any.whl(135.61 KB)
    s3cmd-2.0.2-py3-none-any.whl.asc(819 bytes)
    s3cmd-2.0.2.tar.gz(121.35 KB)
    s3cmd-2.0.2.tar.gz.asc(819 bytes)
    s3cmd-2.0.2.zip(136.17 KB)
    s3cmd-2.0.2.zip.asc(819 bytes)
  • v2.0.1(Oct 21, 2017)

    • Support for Python 3 is now stable
    • Fixed signature issues due to upper cases in hostname (#920)
    • Improved support for Minio Azure gateway (Julien Maitrehenry, Harshavardhana)
    • Added signurl_use_https option to use https prefix for signurl (Julien Recurt)
    • Fixed a lot of remaining issues and regressions for Python 3 (#922, #921, #908)
    • Fixed --configure option with Python 3
    • Fixed non string cmdline parameters being ignored
    • Windows support fixes (#922)
    • Don't force anymore to have a / on last parameter for the "modify" command (#886)
    • Removed the python3 support warning
    • Detect and report error 403 in getpolicy for info command (#894)
    • Added a specific error message when getting policy by non owner (#885)
    • Many other bug fixes (#905, #892, #890, #888, #889, #887)
    Source code(tar.gz)
    Source code(zip)
    s3cmd-2.0.1.tar.gz(119.06 KB)
    s3cmd-2.0.1.tar.gz.asc(819 bytes)
    s3cmd-2.0.1.zip(133.82 KB)
    s3cmd-2.0.1.zip.asc(819 bytes)
  • v2.0.0(Jun 26, 2017)

    • Added support for Python 3 (Shaform, Florent Viard)
    • Added getlifecycle command (Daniel Gryniewicz)
    • Added --cf-inval for invalidating multiple CF distributions (Joe Mifsud)
    • Added --limit to "ls" and "la" commands to return the specified number of objects (Masashi Ozawa)
    • Added --token-refresh and --no-token-refresh and get the access token from the environment (Marco Jakob)
    • Added --restore-priority and --restore-days for S3 Glacier (Robert Palmer)
    • Fixed requester pays header with HEAD requests (Christian Rodriguez)
    • Don't allow mv/cp of multiple files to single file (Guy Gur-Ari)
    • Generalize wildcard certificate forgiveness (Mark Titorenko)
    • Multiple fixes for SSL connections and proxies
    • Added support for HTTP 100-CONTINUE
    • Fixes for s3-like servers
    • Big cleanup and many unicode fixes
    • Many other bug fixes
    Source code(tar.gz)
    Source code(zip)
    s3cmd-2.0.0.tar.gz(112.58 KB)
    s3cmd-2.0.0.tar.gz.asc(819 bytes)
    s3cmd-2.0.0.zip(127.00 KB)
    s3cmd-2.0.0.zip.asc(819 bytes)
  • v1.6.1(Jan 20, 2016)

  • v1.6.0(Sep 18, 2015)

    s3cmd-1.6.0 - 2015-09-18

    • Support signed URL content disposition type
    • Added 'ls -l' long listing including storage class
    • Added --limit-rate=RATE
    • Added --server-side-encryption-kms-id=KEY_ID
    • Added --storage-class=CLASS
    • Added --requester-pays, [payer] command
    • Added --[no-]check-hostname
    • Added --stop-on-error, removed --ignore-failed-copy
    • Added [setcors], [delcors] commands
    • Added support for cn-north-1 region hostname checks
    • Output strings may have changed. Scripts calling s3cmd expecting specific text may need to be updated.
    • HTTPS is now the default
    • Many unicode fixes
    • Many other bug fixes
    Source code(tar.gz)
    Source code(zip)
    s3cmd-1.6.0.tar.gz(98.45 KB)
    s3cmd-1.6.0.tar.gz.asc(811 bytes)
    s3cmd-1.6.0.zip(110.04 KB)
    s3cmd-1.6.0.zip.asc(811 bytes)
📼Command line tool based on youtube-dl to easily download selected channels from your subscriptions.

youtube-cdl Command line tool based on youtube-dl to easily download selected channels from your subscriptions. This tool is very handy if you want to

Anatoly 64 Dec 25, 2022
Tool To download Amazon 4k SDR HDR 1080, CDM IS Not Included

WV-AMZN-4K-RIPPER Tool To download Amazon 4k SDR HDR 1080, CDM IS Not Included For CDM You can Mail :- [email protected] Note : CDM is not free L

null 11 Dec 23, 2021
Tool To download Amazon 4k SDR HDR 1080, CDM IS Not Included

WV-AMZN-4K-RIPPER Tool To download Amazon 4k SDR HDR 1080, CDM IS Not Included For CDM You can Mail :- [email protected] Note : CDM is not free L

Denis Trunov 179 Dec 17, 2022
Tool To download - Amazon - Netflix- Disney+ - VideoLand - Boomerang - RTE.ie

vinetrimmer Widevine Decryption Script for Python Modules Amazon Netflix (with h264@mpl support) Disney+ VideoLand Boomerang RTE.ie Hello Fellow < Dev

null 9 Dec 31, 2021
Command-line program to download videos from YouTube.com and other video sites

youtube-dl - download videos from youtube.com or other video platforms

youtube-dl 116.4k Jan 7, 2023
A lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos.

A lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos.

pytube 7.9k Jan 2, 2023
Jocomol 16 Dec 12, 2022
YoutubeDownloader - Repo for downloading YT audio and videos

YoutubeDownloader Downloads video/playlist/audio from youtube url. install all t

Anuj SP 2 Feb 17, 2022
Downloads .ksy files and their dependencies straight from the official kaitai-struct format gallery.

ksy-dl Downloads .ksy files and their dependencies straight from the official kaitai-struct format gallery. This tool will: Fetch any of the official

null 3 Jun 20, 2022
Vinetrimmer-DRM-TOOL - Widevine DRM downloader and decrypter for AMZN|NF|STAN And all

?? ✂️ Vinetrimmer Widevine DRM downloader and decrypter. Thanks to wvleaks for t

Vlad Tănăsescu 20 Jan 13, 2022
ImageScraper is a cross-platform tool for downloading a specified count from xkcd, Astronomy Picture of the Day and Existential Comics

ImageScraper The ImageScraper is a cross-platform tool for downloading a specified count from xkcd, Astronomy Picture of the Day and Existential Comic

1amnobody 1 Jan 25, 2022
Download YouTube videos/music and images in MP4, JPG with this tool.

ABOUT THE TOOL Download YouTube videos, music and images in MP4, JPG with this tool, with an easy to understand interface. This tool works with both,

TrollSkull 5 Jan 2, 2023
A tool written in Python to download all Snapmaps content from a specific location.

snapmap-archiver A tool written in Python to download all Snapmaps content from a specific location.

null 46 Dec 9, 2022
SABnzbd - The automated Usenet download tool

SABnzbd is an Open Source Binary Newsreader written in Python.

SABnzbd 1.8k Dec 30, 2022
MMDL (Mega Music Downloader) - A tool to easily download music.

mmdl - Mega Music Downloader What is mmdl ❓ TLDR: MMDL is a cli app which allows you to quickly and efficiently download one or multiple songs from Yo

techboy-coder 30 Dec 13, 2022
A tool to download program information from Bugcrowd, for use by researchers to compare programs they are eligible to participate in

Description bcstats is a tool which allows Bugcrowd researchers to download information about all accessible programs (public and private) into a sing

null 19 Oct 13, 2022
⚙️ A CLI tool that can download songs from youtube.

⚙️ Music Downloader Music Downloader is a tool that can download songs from Youtube. Installation Base requirements: Python 3.7+ If you have Python 3.

matjs 4 Nov 3, 2021
YT-Downloader is a Tool to download youtube video.

YT-Downloader YT-Downloader is a Tool to download youtube video.If you are looking for a simple video downloader tool Than This YT-Downloader may be u

Pradip Thapa 7 May 11, 2022
This is a tool to allow downloading any links from r/Roms Magethread

ILYFPR This is a tool to allow downloading any links from r/Roms Magethread Limitations: It downloads ALL roms of the system you choose. This will be

Erase 4 Nov 4, 2021