Git Product home page Git Product logo

mc's Introduction

MinIO Client Quickstart Guide

Slack Go Report Card Docker Pulls license

Documentation

MinIO Client (mc) provides a modern alternative to UNIX commands like ls, cat, cp, mirror, diff, find etc. It supports filesystems and Amazon S3 compatible cloud storage service (AWS Signature v2 and v4).

  alias      manage server credentials in configuration file
  admin      manage MinIO servers
  anonymous  manage anonymous access to buckets and objects
  batch      manage batch jobs
  cp         copy objects
  cat        display object contents
  diff       list differences in object name, size, and date between two buckets
  du         summarize disk usage recursively
  encrypt    manage bucket encryption config
  event      manage object notifications
  find       search for objects
  get        get s3 object to local
  head       display first 'n' lines of an object
  ilm        manage bucket lifecycle
  idp        manage MinIO IDentity Provider server configuration
  license    license related commands
  legalhold  manage legal hold for object(s)
  ls         list buckets and objects
  mb         make a bucket
  mv         move objects
  mirror     synchronize object(s) to a remote site
  od         measure single stream upload and download
  ping       perform liveness check
  pipe       stream STDIN to an object
  put        upload an object to a bucket
  quota      manage bucket quota
  rm         remove object(s)
  retention  set retention for object(s)
  rb         remove a bucket
  replicate  configure server side bucket replication
  ready      checks if the cluster is ready or not
  sql        run sql queries on objects
  stat       show object metadata
  support    support related commands
  share      generate URL for temporary access to an object
  tree       list buckets and objects in a tree format
  tag        manage tags for bucket and object(s)
  undo       undo PUT/DELETE operations
  update     update mc to latest release
  version    manage bucket versioning
  watch      listen for object notification events

Docker Container

Stable

docker pull minio/mc
docker run minio/mc ls play

Edge

docker pull minio/mc:edge
docker run minio/mc:edge ls play

Note: Above examples run mc against MinIO play environment by default. To run mc against other S3 compatible servers, start the container this way:

docker run -it --entrypoint=/bin/sh minio/mc

then use the mc alias command.

GitLab CI

When using the Docker container in GitLab CI, you must set the entrypoint to an empty string.

deploy:
  image:
    name: minio/mc
    entrypoint: ['']
  stage: deploy
  before_script:
    - mc alias set minio $MINIO_HOST $MINIO_ACCESS_KEY $MINIO_SECRET_KEY
  script:
    - mc cp <source> <destination>

macOS

Homebrew

Install mc packages using Homebrew

brew install minio/stable/mc
mc --help

GNU/Linux

Binary Download

Platform Architecture URL
GNU/Linux 64-bit Intel https://dl.min.io/client/mc/release/linux-amd64/mc
GNU/Linux 64-bit PPC https://dl.min.io/client/mc/release/linux-ppc64le/mc
GNU/Linux 64-bit ARM https://dl.min.io/client/mc/release/linux-arm64/mc
Linux/s390x S390X https://dl.min.io/client/mc/release/linux-s390x/mc
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
./mc --help

Microsoft Windows

Binary Download

Platform Architecture URL
Microsoft Windows 64-bit Intel https://dl.min.io/client/mc/release/windows-amd64/mc.exe
mc.exe --help

Install from Source

Source installation is only intended for developers and advanced users. If you do not have a working Golang environment, please follow How to install Golang. Minimum version required is go1.17

go install github.com/minio/mc@latest

Add a Cloud Storage Service

If you are planning to use mc only on POSIX compatible filesystems, you may skip this step and proceed to everyday use.

To add one or more Amazon S3 compatible hosts, please follow the instructions below. mc stores all its configuration information in ~/.mc/config.json file.

mc alias set <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY> --api <API-SIGNATURE> --path <BUCKET-LOOKUP-TYPE>

<ALIAS> is simply a short name to your cloud storage service. S3 end-point, access and secret keys are supplied by your cloud storage provider. API signature is an optional argument. By default, it is set to "S3v4".

Path is an optional argument. It is used to indicate whether dns or path style url requests are supported by the server. It accepts "on", "off" as valid values to enable/disable path style requests.. By default, it is set to "auto" and SDK automatically determines the type of url lookup to use.

Example - MinIO Cloud Storage

MinIO server startup banner displays URL, access and secret keys.

mc alias set minio http://192.168.1.51 BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12

Example - Amazon S3 Cloud Storage

Get your AccessKeyID and SecretAccessKey by following AWS Credentials Guide.

mc alias set s3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12

Note: As an IAM user on Amazon S3 you need to make sure the user has full access to the buckets or set the following restricted policy for your IAM user

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowBucketStat",
            "Effect": "Allow",
            "Action": [
                "s3:HeadBucket"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowThisBucketOnly",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::<your-restricted-bucket>/*",
                "arn:aws:s3:::<your-restricted-bucket>"
            ]
        }
    ]
}

Example - Google Cloud Storage

Get your AccessKeyID and SecretAccessKey by following Google Credentials Guide

mc alias set gcs  https://storage.googleapis.com BKIKJAA5BMMU2RHO6IBB V8f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12

Test Your Setup

mc is pre-configured with https://play.min.io, aliased as "play". It is a hosted MinIO server for testing and development purpose. To test Amazon S3, simply replace "play" with "s3" or the alias you used at the time of setup.

Example:

List all buckets from https://play.min.io

mc ls play
[2016-03-22 19:47:48 PDT]     0B my-bucketname/
[2016-03-22 22:01:07 PDT]     0B mytestbucket/
[2016-03-22 20:04:39 PDT]     0B mybucketname/
[2016-01-28 17:23:11 PST]     0B newbucket/
[2016-03-20 09:08:36 PDT]     0B s3git-test/

Make a bucket mb command creates a new bucket.

Example:

mc mb play/mybucket
Bucket created successfully `play/mybucket`.

Copy Objects cp command copies data from one or more sources to a target.

Example:

mc cp myobject.txt play/mybucket
myobject.txt:    14 B / 14 B  ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  100.00 % 41 B/s 0

Everyday Use

Shell aliases

You may add shell aliases to override your common Unix tools.

alias ls='mc ls'
alias cp='mc cp'
alias cat='mc cat'
alias mkdir='mc mb'
alias pipe='mc pipe'
alias find='mc find'

Shell autocompletion

In case you are using bash, zsh or fish. Shell completion is embedded by default in mc, to install auto-completion use mc --autocompletion. Restart the shell, mc will auto-complete commands as shown below.

mc <TAB>
admin    config   diff     find     ls       mirror   policy   session  sql      update   watch
cat      cp       event    head     mb       pipe     rm       share    stat     version

Contribute to MinIO Project

Please follow MinIO Contributor's Guide

License

Use of mc is governed by the GNU AGPLv3 license that can be found in the LICENSE file.

mc's People

Contributors

abperiasamy avatar adfost avatar anjalshireesh avatar balamurugana avatar bigustad avatar cartermcclellan avatar deekoder avatar dependabot[bot] avatar donatello avatar dormanze avatar dvaldivia avatar ebozduman avatar harshavardhana avatar jiuker avatar kannappanr avatar kerneltime avatar klauspost avatar krishnasrinivas avatar krisis avatar minio-trusted avatar nitisht avatar poornas avatar praveenrajmani avatar r-scheele avatar shtripat avatar sinhaashish avatar taran-p avatar vadmeste avatar wlan0 avatar zveinn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mc's Issues

mc config generates a config then fails

Steps to reproduce

$ rm -rf ~/.mc/
$ mc --debug config generate
<nil>
mc: Unable to generate config file /home/fkautz/.mc/config.json

# config exists at this point

$ mc --debug config generate
Config exists
- 0 viosys-carbon:/home/fkautz/gopath/src/github.com/minio-io/mc/cmd-config.go:144 main.saveConfig(): {"sys.arch":"amd64","sys.cpus":"4","sys.go":"go1.4.2","sys.host":"viosys-carbon","sys.mem.allocated":"178KB","sys.mem.heap.allocated":"836KB","sys.mem.heap.used":"145KB","sys.mem.used":"145KB","sys.os":"linux"}
- 1 viosys-carbon:/home/fkautz/gopath/src/github.com/minio-io/mc/cmd-config.go:273 main.doConfigCmd(): {"sys.arch":"amd64","sys.cpus":"4","sys.go":"go1.4.2","sys.host":"viosys-carbon","sys.mem.allocated":"181KB","sys.mem.heap.allocated":"836KB","sys.mem.heap.used":"148KB","sys.mem.used":"148KB","sys.os":"linux"}
mc: Configuration file /home/fkautz/.mc/config.json already exists

On windows more than 2 to 3 target destinations during ./mc cp fails as below sporadically

created by main.doPutMultiTarget
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/cmd-cp.go:58 +0xe7

goroutine 1 [runnable, locked to thread]:
syscall.(*Proc).Call(0xc0820044c0, 0xc082155128, 0x2, 0x2, 0x20, 0x7b2580, 0x0,
0x0)
        c:/go/src/syscall/dll_windows.go:132 +0x36e
syscall.(*LazyProc).Call(0xc082007ec0, 0xc082155128, 0x2, 0x2, 0xc082112100, 0x1
, 0x0, 0x0)
        c:/go/src/syscall/dll_windows.go:279 +0x74
github.com/shiena/ansicolor.getConsoleScreenBufferInfo(0x1c, 0xc08200a140)
        C:/Users/Garima Kapoor/Go/src/github.com/shiena/ansicolor/ansicolor_wind
ows.go:159 +0xaa
github.com/shiena/ansicolor.changeColor(0xc08202a27c, 0x1, 0x40)
        C:/Users/Garima Kapoor/Go/src/github.com/shiena/ansicolor/ansicolor_wind
ows.go:208 +0x4f
github.com/shiena/ansicolor.parseEscapeSequence(0xc08202a26d, 0xc08202a27c, 0x1,
 0x40)
        C:/Users/Garima Kapoor/Go/src/github.com/shiena/ansicolor/ansicolor_wind
ows.go:259 +0x4d
github.com/shiena/ansicolor.(*ansiColorWriter).Write(0xc08202a240, 0xc0821cc0a0,
 0x4, 0x50, 0x2, 0x0, 0x0)
        C:/Users/Garima Kapoor/Go/src/github.com/shiena/ansicolor/ansicolor_wind
ows.go:302 +0x4cb
fmt.Fprintf(0x181d80, 0xc08202a240, 0x7f0bb0, 0x6, 0xc082155438, 0x2, 0x2, 0x421
940, 0x0, 0x0)
        c:/go/src/fmt/print.go:189 +0xb3
github.com/fatih/color.Unset()
        C:/Users/Garima Kapoor/Go/src/github.com/fatih/color/color.go:79 +0x171
github.com/fatih/color.(*Color).Println(0xc082004fa0, 0x0, 0x0, 0x0, 0x1, 0x0, 0
x0)
        C:/Users/Garima Kapoor/Go/src/github.com/fatih/color/color.go:130 +0xf0
main.colorPrintln(0xc082004fa0, 0xc082155710, 0x1, 0x1)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/colors.go:64 +0x77
main.info(0xc082155710, 0x1, 0x1)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/colors.go:41 +0xe2
main.multiCopy(0xc08206a190, 0x4, 0x7, 0xc082007f80, 0x27, 0x0, 0x0)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/cmd-cp.go:123 +0xd7
5
main.doCopyCmd(0xc08209e1e0)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/cmd-cp.go:143 +0x30
2
github.com/minio-io/cli.Command.Run(0x7fbab0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x83
3b70, 0x16, 0x890d70, ...)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/cli/command.go:123 +0x
1074
github.com/minio-io/cli.(*App).Run(0xc082078300, 0xc082010070, 0x7, 0x7, 0x0, 0x
0)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/cli/app.go:181 +0x85d
github.com/minio-io/cli.(*App).RunAndExitOnError(0xc082078300)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/cli/app.go:192 +0x5e
main.main()
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/main.go:114 +0x1fc

goroutine 9 [IO wait]:
net.(*pollDesc).Wait(0xc082066170, 0x72, 0x0, 0x0)
        c:/go/src/net/fd_poll_runtime.go:84 +0x4e
net.(*ioSrv).ExecIO(0xc082044070, 0xc082066060, 0x7f91b0, 0x7, 0x8b49e8, 0x3, 0x
0, 0x0)
        c:/go/src/net/fd_windows.go:188 +0x305
net.(*netFD).Read(0xc082066000, 0xc082162000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
        c:/go/src/net/fd_windows.go:470 +0x180
net.(*conn).Read(0xc082044080, 0xc082162000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
        c:/go/src/net/net.go:121 +0xe3
crypto/tls.(*block).readFromUntil(0xc08202d350, 0x1836f0, 0xc082044080, 0x5, 0x0
, 0x0)
        c:/go/src/crypto/tls/conn.go:454 +0xed
crypto/tls.(*Conn).readRecord(0xc082068000, 0x17, 0x0, 0x0)
        c:/go/src/crypto/tls/conn.go:539 +0x2e1
crypto/tls.(*Conn).Read(0xc082068000, 0xc08200f000, 0x1000, 0x1000, 0x0, 0x0, 0x
0)
        c:/go/src/crypto/tls/conn.go:904 +0x16d
net/http.noteEOFReader.Read(0x183ba0, 0xc082068000, 0xc082052108, 0xc08200f000,
0x1000, 0x1000, 0x740140, 0x0, 0x0)
        c:/go/src/net/http/transport.go:1270 +0x75
net/http.(*noteEOFReader).Read(0xc0820b8180, 0xc08200f000, 0x1000, 0x1000, 0xc08
2012000, 0x0, 0x0)
        <autogenerated>:125 +0xdb
bufio.(*Reader).fill(0xc082028d20)
        c:/go/src/bufio/bufio.go:97 +0x1d5
bufio.(*Reader).Peek(0xc082028d20, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
        c:/go/src/bufio/bufio.go:132 +0xf7
net/http.(*persistConn).readLoop(0xc0820520b0)
        c:/go/src/net/http/transport.go:842 +0xab
created by net/http.(*Transport).dialConn
        c:/go/src/net/http/transport.go:660 +0xca6

goroutine 10 [select]:
net/http.(*persistConn).writeLoop(0xc0820520b0)
        c:/go/src/net/http/transport.go:945 +0x424
created by net/http.(*Transport).dialConn
        c:/go/src/net/http/transport.go:661 +0xcc3

goroutine 12 [select]:
net/http.(*persistConn).roundTrip(0xc0820524d0, 0xc0820c2f70, 0x0, 0x0, 0x0)
        c:/go/src/net/http/transport.go:1082 +0x7b4
net/http.(*Transport).RoundTrip(0xc08202a3f0, 0xc0820205b0, 0x0, 0x0, 0x0)
        c:/go/src/net/http/transport.go:235 +0x55f
github.com/minio-io/mc/pkg/client/s3.RoundTripTrace.RoundTrip(0x1823c8, 0x9e80a8
, 0x182000, 0xc08202a3f0, 0xc0820205b0, 0xc082011594, 0x0, 0x0)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/pkg/client/s3/httpt
race.go:51 +0x187
github.com/minio-io/mc/pkg/client/s3.(*RoundTripTrace).RoundTrip(0xc0820b8400, 0
xc0820205b0, 0xc082007fb8, 0x0, 0x0)
        <autogenerated>:20 +0xc3
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc0820c2c30, 0xc082007fc9,
 0x8, 0xc082007fd2, 0x1, 0xc0820bc3f1, 0x20, 0x111b1f0, 0x183da0, 0xc082044058,
...)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/pkg/client/s3/objec
t.go:73 +0x33d
main.multiTargetGoroutine(0xc082007fb0, 0x23, 0xc0820bc3f1, 0x20, 0x111b1f0, 0x1
83da0, 0xc082044058, 0xc082028e40)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/cmd-cp.go:48 +0x319

created by main.doPutMultiTarget
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/cmd-cp.go:58 +0xe7

goroutine 13 [select]:
net/http.(*persistConn).roundTrip(0xc082052580, 0xc0820c32c0, 0x0, 0x0, 0x0)
        c:/go/src/net/http/transport.go:1082 +0x7b4
net/http.(*Transport).RoundTrip(0xc08202a3f0, 0xc082020820, 0x0, 0x0, 0x0)
        c:/go/src/net/http/transport.go:235 +0x55f
github.com/minio-io/mc/pkg/client/s3.RoundTripTrace.RoundTrip(0x1823c8, 0x9e80a8
, 0x182000, 0xc08202a3f0, 0xc082020820, 0xc082011de4, 0x0, 0x0)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/pkg/client/s3/httpt
race.go:51 +0x187
github.com/minio-io/mc/pkg/client/s3.(*RoundTripTrace).RoundTrip(0xc0820b8920, 0
xc082020820, 0xc08202c008, 0x0, 0x0)
        <autogenerated>:20 +0xc3
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc0820c2f90, 0xc08202c019,
 0x8, 0xc08202c022, 0x1, 0xc0820bc3f1, 0x20, 0x111b1f0, 0x183da0, 0xc0820440a0,
...)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/pkg/client/s3/objec
t.go:73 +0x33d
main.multiTargetGoroutine(0xc08202c000, 0x23, 0xc0820bc3f1, 0x20, 0x111b1f0, 0x1
83da0, 0xc0820440a0, 0xc082028e40)
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/cmd-cp.go:48 +0x319

created by main.doPutMultiTarget
        C:/Users/Garima Kapoor/Go/src/github.com/minio-io/mc/cmd-cp.go:58 +0xe7

goroutine 29 [select]:
net/http.(*persistConn).writeLoop(0xc0820526e0)
        c:/go/src/net/http/transport.go:945 +0x424
created by net/http.(*Transport).dialConn
        c:/go/src/net/http/transport.go:661 +0xcc3

goroutine 33 [select]:
net/http.(*persistConn).writeLoop(0xc082052580)
        c:/go/src/net/http/transport.go:945 +0x424
created by net/http.(*Transport).dialConn
        c:/go/src/net/http/transport.go:661 +0xcc3

goroutine 31 [select]:
net/http.(*persistConn).writeLoop(0xc082052630)
        c:/go/src/net/http/transport.go:945 +0x424
created by net/http.(*Transport).dialConn
        c:/go/src/net/http/transport.go:661 +0xcc3

goroutine 26 [runnable]:
net.(*pollDesc).Wait(0xc0820662f0, 0x72, 0x0, 0x0)
        c:/go/src/net/fd_poll_runtime.go:84 +0x4e
net.(*ioSrv).ExecIO(0xc082044070, 0xc0820661e0, 0x7f91b0, 0x7, 0x8b49e8, 0xfffff
ffffffffffb, 0x0, 0x0)
        c:/go/src/net/fd_windows.go:188 +0x305
net.(*netFD).Read(0xc082066180, 0xc08206d000, 0x400, 0x400, 0x0, 0x0, 0x0)
        c:/go/src/net/fd_windows.go:470 +0x180
net.(*conn).Read(0xc082044240, 0xc08206d000, 0x400, 0x400, 0x0, 0x0, 0x0)
        c:/go/src/net/net.go:121 +0xe3
crypto/tls.(*block).readFromUntil(0xc0820bd4a0, 0x1836f0, 0xc082044240, 0x5, 0x0
, 0x0)
        c:/go/src/crypto/tls/conn.go:454 +0xed
crypto/tls.(*Conn).readRecord(0xc082068580, 0x17, 0x0, 0x0)
        c:/go/src/crypto/tls/conn.go:539 +0x2e1
crypto/tls.(*Conn).Read(0xc082068580, 0xc0820af000, 0x1000, 0x1000, 0x0, 0x0, 0x
0)
        c:/go/src/crypto/tls/conn.go:904 +0x16d
net/http.noteEOFReader.Read(0x183ba0, 0xc082068580, 0xc082052528, 0xc0820af000,
0x1000, 0x1000, 0x170010, 0x0, 0x0)
        c:/go/src/net/http/transport.go:1270 +0x75
net/http.(*noteEOFReader).Read(0xc082140140, 0xc0820af000, 0x1000, 0x1000, 0xc08
1ffbbf9, 0x0, 0x0)
        <autogenerated>:125 +0xdb
bufio.(*Reader).fill(0xc0820286c0)
        c:/go/src/bufio/bufio.go:97 +0x1d5
bufio.(*Reader).Peek(0xc0820286c0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
        c:/go/src/bufio/bufio.go:132 +0xf7
net/http.(*persistConn).readLoop(0xc0820524d0)
        c:/go/src/net/http/transport.go:842 +0xab
created by net/http.(*Transport).dialConn
        c:/go/src/net/http/transport.go:660 +0xca6

goroutine 30 [IO wait]:
net.(*pollDesc).Wait(0xc0820665f0, 0x72, 0x0, 0x0)
        c:/go/src/net/fd_poll_runtime.go:84 +0x4e
net.(*ioSrv).ExecIO(0xc082044070, 0xc0820664e0, 0x7f91b0, 0x7, 0x8b49e8, 0xc0820
87b80, 0x0, 0x0)
        c:/go/src/net/fd_windows.go:188 +0x305
net.(*netFD).Read(0xc082066480, 0xc08206d800, 0x400, 0x400, 0x0, 0x0, 0x0)
        c:/go/src/net/fd_windows.go:470 +0x180
net.(*conn).Read(0xc082044260, 0xc08206d800, 0x400, 0x400, 0x0, 0x0, 0x0)
        c:/go/src/net/net.go:121 +0xe3
crypto/tls.(*block).readFromUntil(0xc0820bd560, 0x1836f0, 0xc082044260, 0x5, 0x0
, 0x0)
        c:/go/src/crypto/tls/conn.go:454 +0xed
crypto/tls.(*Conn).readRecord(0xc082068840, 0x17, 0x0, 0x0)
        c:/go/src/crypto/tls/conn.go:539 +0x2e1
crypto/tls.(*Conn).Read(0xc082068840, 0xc082147000, 0x1000, 0x1000, 0x0, 0x0, 0x
0)
        c:/go/src/crypto/tls/conn.go:904 +0x16d
net/http.noteEOFReader.Read(0x183ba0, 0xc082068840, 0xc082052688, 0xc082147000,
0x1000, 0x1000, 0xc0820e2080, 0x0, 0x0)
        c:/go/src/net/http/transport.go:1270 +0x75
net/http.(*noteEOFReader).Read(0xc082140380, 0xc082147000, 0x1000, 0x1000, 0xc08
2012000, 0x0, 0x0)
        <autogenerated>:125 +0xdb
bufio.(*Reader).fill(0xc082028d80)
        c:/go/src/bufio/bufio.go:97 +0x1d5
bufio.(*Reader).Peek(0xc082028d80, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
        c:/go/src/bufio/bufio.go:132 +0xf7
net/http.(*persistConn).readLoop(0xc082052630)
        c:/go/src/net/http/transport.go:842 +0xab
created by net/http.(*Transport).dialConn
        c:/go/src/net/http/transport.go:660 +0xca6

goroutine 32 [runnable]:
net.(*pollDesc).Wait(0xc082066470, 0x72, 0x0, 0x0)
        c:/go/src/net/fd_poll_runtime.go:84 +0x4e
net.(*ioSrv).ExecIO(0xc082044070, 0xc082066360, 0x7f91b0, 0x7, 0x8b49e8, 0x0, 0x
0, 0x0)
        c:/go/src/net/fd_windows.go:188 +0x305
net.(*netFD).Read(0xc082066300, 0xc08210a000, 0x400, 0x400, 0x0, 0x0, 0x0)
        c:/go/src/net/fd_windows.go:470 +0x180
net.(*conn).Read(0xc082044280, 0xc08210a000, 0x400, 0x400, 0x0, 0x0, 0x0)
        c:/go/src/net/net.go:121 +0xe3
crypto/tls.(*block).readFromUntil(0xc0820bd620, 0x1836f0, 0xc082044280, 0x5, 0x0
, 0x0)
        c:/go/src/crypto/tls/conn.go:454 +0xed
crypto/tls.(*Conn).readRecord(0xc082068b00, 0x17, 0x0, 0x0)
        c:/go/src/crypto/tls/conn.go:539 +0x2e1
crypto/tls.(*Conn).Read(0xc082068b00, 0xc0820db000, 0x1000, 0x1000, 0x0, 0x0, 0x
0)
        c:/go/src/crypto/tls/conn.go:904 +0x16d
net/http.noteEOFReader.Read(0x183ba0, 0xc082068b00, 0xc0820525d8, 0xc0820db000,
0x1000, 0x1000, 0x170010, 0x0, 0x0)
        c:/go/src/net/http/transport.go:1270 +0x75
net/http.(*noteEOFReader).Read(0xc082140480, 0xc0820db000, 0x1000, 0x1000, 0xc08
1ffbbf5, 0x0, 0x0)
        <autogenerated>:125 +0xdb
bufio.(*Reader).fill(0xc082029140)
        c:/go/src/bufio/bufio.go:97 +0x1d5
bufio.(*Reader).Peek(0xc082029140, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
        c:/go/src/bufio/bufio.go:132 +0xf7
net/http.(*persistConn).readLoop(0xc082052580)
        c:/go/src/net/http/transport.go:842 +0xab
created by net/http.(*Transport).dialConn
        c:/go/src/net/http/transport.go:660 +0xca6

goroutine 28 [IO wait]:
net.(*pollDesc).Wait(0xc082066770, 0x72, 0x0, 0x0)
        c:/go/src/net/fd_poll_runtime.go:84 +0x4e
net.(*ioSrv).ExecIO(0xc082044070, 0xc082066660, 0x7f91b0, 0x7, 0x8b49e8, 0xc0820
87810, 0x0, 0x0)
        c:/go/src/net/fd_windows.go:188 +0x305
net.(*netFD).Read(0xc082066600, 0xc08210a800, 0x400, 0x400, 0x0, 0x0, 0x0)
        c:/go/src/net/fd_windows.go:470 +0x180
net.(*conn).Read(0xc0820442a0, 0xc08210a800, 0x400, 0x400, 0x0, 0x0, 0x0)
        c:/go/src/net/net.go:121 +0xe3
crypto/tls.(*block).readFromUntil(0xc0820bd6e0, 0x1836f0, 0xc0820442a0, 0x5, 0x0
, 0x0)
        c:/go/src/crypto/tls/conn.go:454 +0xed
crypto/tls.(*Conn).readRecord(0xc082068dc0, 0x17, 0x0, 0x0)
        c:/go/src/crypto/tls/conn.go:539 +0x2e1
crypto/tls.(*Conn).Read(0xc082068dc0, 0xc082143000, 0x1000, 0x1000, 0x0, 0x0, 0x
0)
        c:/go/src/crypto/tls/conn.go:904 +0x16d
net/http.noteEOFReader.Read(0x183ba0, 0xc082068dc0, 0xc082052738, 0xc082143000,
0x1000, 0x1000, 0xc0820e2300, 0x0, 0x0)
        c:/go/src/net/http/transport.go:1270 +0x75
net/http.(*noteEOFReader).Read(0xc082140280, 0xc082143000, 0x1000, 0x1000, 0xc08
2012000, 0x0, 0x0)
        <autogenerated>:125 +0xdb
bufio.(*Reader).fill(0xc082028960)
        c:/go/src/bufio/bufio.go:97 +0x1d5
bufio.(*Reader).Peek(0xc082028960, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
        c:/go/src/bufio/bufio.go:132 +0xf7
net/http.(*persistConn).readLoop(0xc0820526e0)
        c:/go/src/net/http/transport.go:842 +0xab
created by net/http.(*Transport).dialConn
        c:/go/src/net/http/transport.go:660 +0xca6

goroutine 27 [select]:
net/http.(*persistConn).writeLoop(0xc0820524d0)
        c:/go/src/net/http/transport.go:945 +0x424
created by net/http.(*Transport).dialConn
        c:/go/src/net/http/transport.go:661 +0xcc3

Here is the command line used

C:\Users\Garima Kapoor>mc cp https://s3.amazonaws.com/ddd/chrome.dll https://s3.
amazonaws.com/minioinc/1 https://s3.amazonaws.com/minioinc/2 https://s3.amazonaw
s.com/minioinc/3 https://s3.amazonaws.com/minioinc/4

mc alias failure with alias:<bucketname>

$ ./mc --debug ls localhost:newbucket
GET / HTTP/1.1
Host: localhost:9000newbucket
User-Agent: Minio/b23a632afbc913c19221d5cbed9db8440c0f0612 (./mc; linux; amd64)
Authorization: AWS **PASSWORD**STRIPPED**
Date: Mon, 13 Apr 2015 00:46:33 GMT
Accept-Encoding: gzip

dial tcp: unknown port tcp/9000newbucket
- 0 command:mc/pkg/client/s3/httptrace.go:53 s3.RoundTripTrace.RoundTrip(): {"sys.arch":"amd64","sys.cpus":"4","sys.go":"go1.4","sys.host":"command","sys.mem.allocated":"207KB","sys.mem.heap.allocated":"836KB","sys.mem.heap.used":"148KB","sys.mem.used":"148KB","sys.os":"linux"}
- 1 command:mc/pkg/client/s3/httptrace.go:53 s3.RoundTripTrace.RoundTrip(): {"sys.arch":"amd64","sys.cpus":"4","sys.go":"go1.4","sys.host":"command","sys.mem.allocated":"209KB","sys.mem.heap.allocated":"836KB","sys.mem.heap.used":"150KB","sys.mem.used":"150KB","sys.os":"linux"}
- 2 command:mc/cmd-ls.go:97 main.doListCmd(): {"sys.arch":"amd64","sys.cpus":"4","sys.go":"go1.4","sys.host":"command","sys.mem.allocated":"212KB","sys.mem.heap.allocated":"836KB","sys.mem.heap.used":"152KB","sys.mem.used":"152KB","sys.os":"linux"}

dial tcp: unknown port tcp/9000newbucket
- 0 command:mc/pkg/client/s3/httptrace.go:53 s3.RoundTripTrace.RoundTrip(): {"sys.arch":"amd64","sys.cpus":"4","sys.go":"go1.4","sys.host":"command","sys.mem.allocated":"207KB","sys.mem.heap.allocated":"836KB","sys.mem.heap.used":"148KB","sys.mem.used":"148KB","sys.os":"linux"}
- 1 command:mc/pkg/client/s3/httptrace.go:53 s3.RoundTripTrace.RoundTrip(): {"sys.arch":"amd64","sys.cpus":"4","sys.go":"go1.4","sys.host":"command","sys.mem.allocated":"209KB","sys.mem.heap.allocated":"836KB","sys.mem.heap.used":"150KB","sys.mem.used":"150KB","sys.os":"linux"}
./mc --debug ls s3:newbucket
No matching host found.
- 0 command:mc/cmd-config.go:331 main.getHostConfig(): {"sys.arch":"amd64","sys.cpus":"4","sys.go":"go1.4","sys.host":"command","sys.mem.allocated":"182KB","sys.mem.heap.allocated":"836KB","sys.mem.heap.used":"122KB","sys.mem.used":"122KB","sys.os":"linux"}
- 1 command:mc/cmd-common.go:72 main.getNewClient(): {"sys.arch":"amd64","sys.cpus":"4","sys.go":"go1.4","sys.host":"command","sys.mem.allocated":"184KB","sys.mem.heap.allocated":"836KB","sys.mem.heap.used":"124KB","sys.mem.used":"124KB","sys.os":"linux"}
- 2 command:mc/cmd-ls.go:90 main.doListCmd(): {"sys.arch":"amd64","sys.cpus":"4","sys.go":"go1.4","sys.host":"command","sys.mem.allocated":"187KB","sys.mem.heap.allocated":"836KB","sys.mem.heap.used":"127KB","sys.mem.used":"127KB","sys.os":"linux"}

No matching host found.
- 0 command:mc/cmd-config.go:331 main.getHostConfig(): {"sys.arch":"amd64","sys.cpus":"4","sys.go":"go1.4","sys.host":"command","sys.mem.allocated":"182KB","sys.mem.heap.allocated":"836KB","sys.mem.heap.used":"122KB","sys.mem.used":"122KB","sys.os":"linux"}
- 1 command:mc/cmd-common.go:72 main.getNewClient(): {"sys.arch":"amd64","sys.cpus":"4","sys.go":"go1.4","sys.host":"command","sys.mem.allocated":"184KB","sys.mem.heap.allocated":"836KB","sys.mem.heap.used":"124KB","sys.mem.used":"124KB","sys.os":"linux"}

mc config generate has extra output

$ mc config generate

Received:

Configuration written to /home/fkautz/.mc/config.json. Please update your access credentials.
%!(EXTRA []interface {}=[])%

runtime out of memory for more than 10 destinations

fatal error: runtime: out of memory

runtime stack:
runtime.SysMap(0xc363590000, 0xf090000, 0x452200, 0xbf3118)
        /usr/local/go/src/runtime/mem_linux.c:149 +0x98
runtime.MHeap_SysAlloc(0xbf8800, 0xf090000, 0x441bf2)
        /usr/local/go/src/runtime/malloc.c:284 +0x124
runtime.MHeap_Alloc(0xbf8800, 0x7846, 0x10100000000, 0x0)
        /usr/local/go/src/runtime/mheap.c:240 +0x66

goroutine 27 [running]:  
runtime.switchtoM()
        /usr/local/go/src/runtime/asm_amd64.s:198 fp=0xc2081eb8d8 sp=0xc2081eb8d0
runtime.mallocgc(0xf08bf8c, 0x6f3460, 0xc200000001, 0x0)
        /usr/local/go/src/runtime/malloc.go:199 +0x9f3 fp=0xc2081eb988 sp=0xc2081eb8d8
runtime.newarray(0x6f3460, 0xf08bf8c, 0xc208020e00)
        /usr/local/go/src/runtime/malloc.go:365 +0xc1 fp=0xc2081eb9c0 sp=0xc2081eb988
runtime.makeslice(0x6e6040, 0xf08bf8c, 0xf08bf8c, 0x0, 0x0, 0x0)
        /usr/local/go/src/runtime/slice.go:32 +0x15c fp=0xc2081eba08 sp=0xc2081eb9c0
bytes.makeSlice(0xf08bf8c, 0x0, 0x0, 0x0)
       /usr/local/go/src/bytes/buffer.go:191 +0x6a fp=0xc2081eba58 sp=0xc2081eba08
bytes.(*Buffer).grow(0xc2080c9ab0, 0x3354, 0x3c)
        /usr/local/go/src/bytes/buffer.go:99 +0x243 fp=0xc2081ebad0 sp=0xc2081eba58
bytes.(*Buffer).Write(0xc2080c9ab0, 0xc208162000, 0x3354, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/bytes/buffer.go:127 +0x52 fp=0xc2081ebb28 sp=0xc2081ebad0
io.(*multiWriter).Write(0xc2080c0bc0, 0xc208162000, 0x3354, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/multi.go:43 +0xe1 fp=0xc2081ebbb8 sp=0xc2081ebb28
io.Copy(0x7fa592cc78b0, 0xc2080c0bc0, 0x7fa592cc7730, 0xc2080c0be0, 0x7842a04, 0x0, 0x0)
        /usr/local/go/src/io/io.go:364 +0x278 fp=0xc2081ebc70 sp=0xc2081ebbb8
io.CopyN(0x7fa592cc78b0, 0xc2080c0bc0, 0x7fa592cc77b8, 0xc20803a1c8, 0x10000000, 0xc2080a2fc0, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113 fp=0xc2081ebcf0 sp=0xc2081ebc70
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802bd60, 0x7fff92e15b95, 0x1b, 0x7fff92e15bb1, 0x6, 0x10000000, 0x7fa592cc77b8, 0xc20803a1c8, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b fp=0xc2081ebea8 sp=0xc2081ebcf0
main.func·003(0xf)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124 fp=0xc2081ebfd8 sp=0xc2081ebea8
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc2081ebfe0 sp=0xc2081ebfd8
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

        /usr/local/go/src/io/multi.go:43 +0xe1 fp=0xc2081ebbb8 sp=0xc2081ebb28
io.Copy(0x7fa592cc78b0, 0xc2080c0bc0, 0x7fa592cc7730, 0xc2080c0be0, 0x7842a04, 0x0, 0x0)
        /usr/local/go/src/io/io.go:364 +0x278 fp=0xc2081ebc70 sp=0xc2081ebbb8
io.CopyN(0x7fa592cc78b0, 0xc2080c0bc0, 0x7fa592cc77b8, 0xc20803a1c8, 0x10000000, 0xc2080a2fc0, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113 fp=0xc2081ebcf0 sp=0xc2081ebc70
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802bd60, 0x7fff92e15b95, 0x1b, 0x7fff92e15bb1, 0x6, 0x10000000, 0x7fa592cc77b8
, 0xc20803a1c8, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b fp=0xc2081ebea8 sp=0xc2081ebcf0
main.func·003(0xf)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124 fp=0xc2081ebfd8 sp=0xc2081ebea8
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc2081ebfe0 sp=0xc2081ebfd8
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

goroutine 1 [semacquire, 1 minutes]:
sync.(*WaitGroup).Wait(0xc20801f1a0)
        /usr/local/go/src/sync/waitgroup.go:132 +0x169
main.multiCopy(0xc208070210, 0x10, 0x1f, 0x7fff92e157d5, 0x3b, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:104 +0xd42
main.doCopyCmd(0xc2080bc1e0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:122 +0x22d
github.com/minio-io/cli.Command.Run(0x804d70, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x839d90, 0x16, 0x8948d0, ...)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/cli/command.go:123 +0x106d
github.com/minio-io/cli.(*App).Run(0xc208088400, 0xc20800a000, 0x13, 0x13, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/cli/app.go:181 +0x856
github.com/minio-io/cli.(*App).RunAndExitOnError(0xc208088400)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/cli/app.go:192 +0x57
main.main()
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/main.go:96 +0x1c8

goroutine 17 [syscall, 1 minutes, locked to thread]:
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1

goroutine 10 [runnable]: 
sync.(*Cond).Wait(0xc2080c4de8)
        /usr/local/go/src/sync/cond.go:62 +0x9e
io.(*pipe).write(0xc2080c4d80, 0xc208092000, 0x3354, 0x8000, 0x0, 0x0, 0x0)
        /usr/local/go/src/io/pipe.go:94 +0x244
io.(*PipeWriter).Write(0xc20803a1d0, 0xc208092000, 0x3354, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/pipe.go:161 +0x5b
io.(*multiWriter).Write(0xc20801e040, 0xc208092000, 0x3354, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/multi.go:43 +0xe1
io.Copy(0x7fa592cc78b0, 0xc20801e040, 0x7fa592cc7730, 0xc20801e060, 0x7842a04, 0x0, 0x0)
        /usr/local/go/src/io/io.go:364 +0x278
io.CopyN(0x7fa592cc78b0, 0xc20801e040, 0x7fa592cc78d8, 0xc20802a2c0, 0x10000000, 0xc20802a2c0, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
main.func·002()
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:76 +0x332
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:80 +0x8cd

goroutine 8 [select, 1 minutes]:
net/http.(*persistConn).readLoop(0xc2080b2160)
        /usr/local/go/src/net/http/transport.go:928 +0x9ce
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:660 +0xc9f

goroutine 9 [select, 1 minutes]:
net/http.(*persistConn).writeLoop(0xc2080b2160)
        /usr/local/go/src/net/http/transport.go:945 +0x41d
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:661 +0xcbc

........
.......
......
        /usr/local/go/src/io/io.go:362 +0x1f6
io.CopyN(0x7fa592cc78b0, 0xc20801ee40, 0x7fa592cc77b8, 0xc20803a0f8, 0x10000000, 0xc208037a00, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802ba20, 0x7fff92e1589d, 0x1b, 0x7fff92e158b9, 0x5, 0x10000000, 0x7fa592cc77b8
, 0xc20803a0f8, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0x2)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

goroutine 14 [semacquire]:
sync.(*Cond).Wait(0xc2080c44b0)
        /usr/local/go/src/sync/cond.go:62 +0x9e
io.(*pipe).read(0xc2080c4480, 0xc2080fa000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
        /usr/local/go/src/io/pipe.go:52 +0x303
io.(*PipeReader).Read(0xc20803a108, 0xc2080fa000, 0x8000, 0x8000, 0x7fa592cc5c50, 0x0, 0x0)
        /usr/local/go/src/io/pipe.go:134 +0x5b
io.(*LimitedReader).Read(0xc20801f360, 0xc2080fa000, 0x8000, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/io.go:408 +0xce
io.Copy(0x7fa592cc78b0, 0xc20801f340, 0x7fa592cc7730, 0xc20801f360, 0x7845d58, 0x0, 0x0)
        /usr/local/go/src/io/io.go:362 +0x1f6
io.CopyN(0x7fa592cc78b0, 0xc20801f340, 0x7fa592cc77b8, 0xc20803a108, 0x10000000, 0xc208037d00, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802ba60, 0x7fff92e158d7, 0x1b, 0x7fff92e158f3, 0x5, 0x10000000, 0x7fa592cc77b8
, 0xc20803a108, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0x3)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

goroutine 15 [semacquire]:
sync.(*Cond).Wait(0xc2080c4570)
        /usr/local/go/src/sync/cond.go:62 +0x9e
io.(*pipe).read(0xc2080c4540, 0xc208102000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
        /usr/local/go/src/io/pipe.go:52 +0x303
io.(*PipeReader).Read(0xc20803a118, 0xc208102000, 0x8000, 0x8000, 0x7fa592cc5c50, 0x0, 0x0)
        /usr/local/go/src/io/pipe.go:134 +0x5b
io.(*LimitedReader).Read(0xc20801e880, 0xc208102000, 0x8000, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/io.go:408 +0xce
io.Copy(0x7fa592cc78b0, 0xc20801e860, 0x7fa592cc7730, 0xc20801e880, 0x7845d58, 0x0, 0x0)
        /usr/local/go/src/io/io.go:362 +0x1f6
io.CopyN(0x7fa592cc78b0, 0xc20801e860, 0x7fa592cc77b8, 0xc20803a118, 0x10000000, 0xc208036ec0, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802baa0, 0x7fff92e15911, 0x1b, 0x7fff92e1592d, 0x5, 0x10000000, 0x7fa592cc77b8
, 0xc20803a118, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0x4)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

io.CopyN(0x7fa592cc78b0, 0xc20801ec20, 0x7fa592cc77b8, 0xc20803a128, 0x10000000, 0xc208037980, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802bae0, 0x7fff92e1594b, 0x1b, 0x7fff92e15967, 0x5, 0x10000000, 0x7fa592cc77b8
, 0xc20803a128, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0x5)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

goroutine 18 [runnable]: 
sync.(*Mutex).Lock(0xc2080c46d0)
        /usr/local/go/src/sync/mutex.go:41
io.(*pipe).read(0xc2080c46c0, 0xc20811a000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
        /usr/local/go/src/io/pipe.go:40 +0xc7
io.(*PipeReader).Read(0xc20803a138, 0xc20811a000, 0x8000, 0x8000, 0x7fa592cc5c50, 0x0, 0x0)
        /usr/local/go/src/io/pipe.go:134 +0x5b
io.(*LimitedReader).Read(0xc20801efc0, 0xc20811a000, 0x8000, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/io.go:408 +0xce
io.Copy(0x7fa592cc78b0, 0xc20801efa0, 0x7fa592cc7730, 0xc20801efc0, 0x7845d58, 0x0, 0x0)
        /usr/local/go/src/io/io.go:362 +0x1f6
io.CopyN(0x7fa592cc78b0, 0xc20801efa0, 0x7fa592cc77b8, 0xc20803a138, 0x10000000, 0xc208037e00, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802bb20, 0x7fff92e15985, 0x1b, 0x7fff92e159a1, 0x5, 0x10000000, 0x7fa592cc77b8
, 0xc20803a138, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0x6)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

sync.(*Cond).Wait(0xc2080c47b0)
        /usr/local/go/src/sync/cond.go:62 +0x9e
io.(*pipe).read(0xc2080c4780, 0xc208122000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
        /usr/local/go/src/io/pipe.go:52 +0x303
io.(*PipeReader).Read(0xc20803a148, 0xc208122000, 0x8000, 0x8000, 0x7fa592cc5c50, 0x0, 0x0)
        /usr/local/go/src/io/pipe.go:134 +0x5b
io.(*LimitedReader).Read(0xc20801f640, 0xc208122000, 0x8000, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/io.go:408 +0xce
io.Copy(0x7fa592cc78b0, 0xc20801f5e0, 0x7fa592cc7730, 0xc20801f640, 0x7845d58, 0x0, 0x0)
        /usr/local/go/src/io/io.go:362 +0x1f6
io.CopyN(0x7fa592cc78b0, 0xc20801f5e0, 0x7fa592cc77b8, 0xc20803a148, 0x10000000, 0xc2080a2100, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802bb60, 0x7fff92e159bf, 0x1b, 0x7fff92e159db, 0x5, 0x10000000, 0x7fa592cc77b8
, 0xc20803a148, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0x7)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

goroutine 20 [runnable]: 
io.(*LimitedReader).Read(0xc20801fae0, 0xc20812a000, 0x8000, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/io.go:401
io.Copy(0x7fa592cc78b0, 0xc20801fac0, 0x7fa592cc7730, 0xc20801fae0, 0x7845d58, 0x0, 0x0)
        /usr/local/go/src/io/io.go:362 +0x1f6
io.CopyN(0x7fa592cc78b0, 0xc20801fac0, 0x7fa592cc77b8, 0xc20803a158, 0x10000000, 0xc2080a2400, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802bba0, 0x7fff92e159f9, 0x1b, 0x7fff92e15a15, 0x5, 0x10000000, 0x7fa592cc77b8
, 0xc20803a158, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0x8)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

io.(*LimitedReader).Read(0xc20801fdc0, 0xc208132000, 0x8000, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/io.go:401
io.Copy(0x7fa592cc78b0, 0xc20801fda0, 0x7fa592cc7730, 0xc20801fdc0, 0x7845d58, 0x0, 0x0)
        /usr/local/go/src/io/io.go:362 +0x1f6
io.CopyN(0x7fa592cc78b0, 0xc20801fda0, 0x7fa592cc77b8, 0xc20803a168, 0x10000000, 0xc2080a2700, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802bbe0, 0x7fff92e15a33, 0x1b, 0x7fff92e15a4f, 0x6, 0x10000000, 0x7fa592cc77b8
, 0xc20803a168, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0x9)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

goroutine 22 [semacquire]:
sync.(*Cond).Wait(0xc2080c49f0)
        /usr/local/go/src/sync/cond.go:62 +0x9e
io.(*pipe).read(0xc2080c49c0, 0xc208142000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
        /usr/local/go/src/io/pipe.go:52 +0x303
io.(*PipeReader).Read(0xc20803a178, 0xc208142000, 0x8000, 0x8000, 0x7fa592cc5c50, 0x0, 0x0)
        /usr/local/go/src/io/pipe.go:134 +0x5b
io.(*LimitedReader).Read(0xc2080c00a0, 0xc208142000, 0x8000, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/io.go:408 +0xce
io.Copy(0x7fa592cc78b0, 0xc2080c0080, 0x7fa592cc7730, 0xc2080c00a0, 0x7845d58, 0x0, 0x0)
        /usr/local/go/src/io/io.go:362 +0x1f6
io.CopyN(0x7fa592cc78b0, 0xc2080c0080, 0x7fa592cc77b8, 0xc20803a178, 0x10000000, 0xc2080a2a00, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802bc20, 0x7fff92e15a6e, 0x1b, 0x7fff92e15a8a, 0x6, 0x10000000, 0x7fa592cc77b8
, 0xc20803a178, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0xa)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14
goroutine 23 [runnable]: 
io.(*LimitedReader).Read(0xc2080c0380, 0xc20814a000, 0x8000, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/io.go:401
io.Copy(0x7fa592cc78b0, 0xc2080c0360, 0x7fa592cc7730, 0xc2080c0380, 0x7845d58, 0x0, 0x0)
        /usr/local/go/src/io/io.go:362 +0x1f6
io.CopyN(0x7fa592cc78b0, 0xc2080c0360, 0x7fa592cc77b8, 0xc20803a188, 0x10000000, 0xc2080a2d00, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802bc60, 0x7fff92e15aa9, 0x1b, 0x7fff92e15ac5, 0x6, 0x10000000, 0x7fa592cc77b8
, 0xc20803a188, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0xb)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

goroutine 24 [runnable]: 
io.(*LimitedReader).Read(0xc2080c02a0, 0xc208112000, 0x8000, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/io.go:401
io.Copy(0x7fa592cc78b0, 0xc2080c0280, 0x7fa592cc7730, 0xc2080c02a0, 0x7845d58, 0x0, 0x0)
        /usr/local/go/src/io/io.go:362 +0x1f6
io.CopyN(0x7fa592cc78b0, 0xc2080c0280, 0x7fa592cc77b8, 0xc20803a198, 0x10000000, 0xc2080a20c0, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802bca0, 0x7fff92e15ae4, 0x1b, 0x7fff92e15b00, 0x6, 0x10000000, 0x7fa592cc77b8
, 0xc20803a198, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0xc)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14
goroutine 25 [runnable]: 
io.(*LimitedReader).Read(0xc2080c0620, 0xc20813a000, 0x8000, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/io.go:401
io.Copy(0x7fa592cc78b0, 0xc2080c0600, 0x7fa592cc7730, 0xc2080c0620, 0x7845d58, 0x0, 0x0)
        /usr/local/go/src/io/io.go:362 +0x1f6
io.CopyN(0x7fa592cc78b0, 0xc2080c0600, 0x7fa592cc77b8, 0xc20803a1a8, 0x10000000, 0xc2080a2600, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802bce0, 0x7fff92e15b1f, 0x1b, 0x7fff92e15b3b, 0x6, 0x10000000, 0x7fa592cc77b8
, 0xc20803a1a8, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0xd)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

goroutine 26 [runnable]: 
io.(*LimitedReader).Read(0xc2080c0900, 0xc20815a000, 0x8000, 0x8000, 0x3354, 0x0, 0x0)
        /usr/local/go/src/io/io.go:401
io.Copy(0x7fa592cc78b0, 0xc2080c08e0, 0x7fa592cc7730, 0xc2080c0900, 0x7845d58, 0x0, 0x0)
        /usr/local/go/src/io/io.go:362 +0x1f6
io.CopyN(0x7fa592cc78b0, 0xc2080c08e0, 0x7fa592cc77b8, 0xc20803a1b8, 0x10000000, 0xc2080a2b80, 0x0, 0x0)
        /usr/local/go/src/io/io.go:327 +0x113
github.com/minio-io/mc/pkg/client/s3.(*s3Client).Put(0xc20802bd20, 0x7fff92e15b5a, 0x1b, 0x7fff92e15b76, 0x6, 0x10000000, 0x7fa592cc77b8, 0xc20803a1b8, 0x0, 0x0)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/pkg/client/s3/object.go:68 +0x28b
main.func·003(0xe)
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:98 +0x124
created by main.multiCopy
        /home/harsha/work/minio/gopath/src/github.com/minio-io/mc/cmd-cp.go:102 +0xd14

Permission Denied

I get error "Permission denied", even if one file or folder under the tree is restricted.

C:\Users\Garima Kapoor\Documents>mc ls "c:\users\garima kapoor\documents"
open c:\users\garima kapoor\documents\My Music: Access is denied.

  • 0 GK-X1CARBON2:mc/pkg/client/fs/fs.go:142 fs.(*fsClient).ListObjects(): {"sys.
    arch":"amd64","sys.cpus":"4","sys.go":"go1.4.2","sys.host":"GK-X1CARBON2","sys.m
    em.allocated":"212KB","sys.mem.heap.allocated":"950KB","sys.mem.heap.used":"129K
    B","sys.mem.used":"129KB","sys.os":"windows"}

Cannot copy to s3 anymore ./mc cp fails

It starts and fails

 ./mc cp /usr/bin/pandoc https://s3.amazonaws.com/valueisgiventocustomer/pandocs
800.00 KB / 34.53 MB [==>                                                                                                    ] 2.26 % 288.26 KB/s 1m59sUnable to write to target

Implement client side server to server copy

//   - <S3Path> <S3Path>
//   - <S3Path> <S3Bucket>
./mc cp s3://your-bucket/filename s3://my-bucket/yourfile
./mc cp s3://your-bucket/filename s3://another-bucket/

^^^ the following styles

400 bad request (Request timeout) from S3 during ./mc cp

$ ./mc --debug cp s3:thisbucketisgoingtobetested/mc s3:thisbucketisgoingtobetested/1
GET /mc HTTP/1.1
Host: thisbucketisgoingtobetested.s3.amazonaws.com
User-Agent: Minio s3Client
Authorization: AWS **PASSWORD**STRIPPED**
Date: Mon, 06 Apr 2015 00:42:47 GMT
Accept-Encoding: gzip

HTTP/1.1 200 OK
Content-Length: 8082519   
Accept-Ranges: bytes
Content-Type: binary/octet-stream
Date: Mon, 06 Apr 2015 00:42:48 GMT
Etag: "952efa80bcd5784c6f60b5c16ddb1aac"
Last-Modified: Wed, 04 Mar 2015 09:33:47 GMT
Server: AmazonS3
X-Amz-Id-2: 2QtmHBzBVtQzG61huk95VPZ7Lf4pb4R+E5atQru6J2fE+jaAocbmaCZ7xekuSEcy
X-Amz-Request-Id: 04F1D467C51AF790

&{PUT https://thisbucketisgoingtobetested.s3.amazonaws.com/1 HTTP/1.1 1 1 map[User-Agent:[Minio s3Client] Content-Md5:[lS76gLzVeExvYLXBbdsarA==] Date:[Mon, 06 Apr 2015 00:42:47 GMT] Authorization:[AWS AKIAIA3SEGOYCMTCTF4A:cVCNISt5QrEfp0Lo3Gwxjz6Y2N4=]] {0xc208050038} 8082519 [] false thisbucketisgoingtobetested.s3.amazonaws.com map[] map[] <nil> map[]   <nil>}
0 B / 7.71 MB [                                                                                                                ] 0.00 % PUT /1 HTTP/1.1
Host: thisbucketisgoingtobetested.s3.amazonaws.com
User-Agent: Minio s3Client
Content-Length: 8082519
Authorization: AWS **PASSWORD**STRIPPED**
Content-Md5: lS76gLzVeExvYLXBbdsarA==
Date: Mon, 06 Apr 2015 00:42:47 GMT
Accept-Encoding: gzip

7.71 MB / 7.71 MB [===========================================================================================] 100.00 % 170.62 KB/s 46sHTTP/1.1 400 Bad Request
Connection: close
Transfer-Encoding: chunked
Content-Type: application/xml
Date: Mon, 06 Apr 2015 00:43:54 GMT
Server: AmazonS3
X-Amz-Id-2: 6R2Ge9ghUoS7+sNeHKNIsRjN8mLljZMRnkt00+H4vtR0JX3yk3SZrDQiEQAf6QKu
X-Amz-Request-Id: C0EB00E15F7FFC29

map[Error:map[HostId:6R2Ge9ghUoS7+sNeHKNIsRjN8mLljZMRnkt00+H4vtR0JX3yk3SZrDQiEQAf6QKu Code:RequestTimeout Message:Your socket connection to the server was not read from or written to within the timeout period. Idle connections will be closed. RequestId:C0EB00E15F7FFC29]]
400 Bad Request
- 0 command:github.com/minio-io/mc/cmd-cp.go:96 map[sys.os:linux sys.arch:amd64 sys.cpus:4 sys.go:go1.4 sys.mem.allocated:21228544 sys.mem.heap.allocated:19611648 sys.host:command sys.mem.used:14602072 sys.mem.heap.used:14602072]

du reports higher disk usage on XFS filesystem after resuming object downloads

XFS kernel patch ---> xfs: dynamic speculative EOF preallocation

Snippet from what really happens in this scenario

Because it is hard to take back specualtive preallocation, cases
where there are large slow growing log files on a nearly full
filesystem may cause premature ENOSPC. Hence as the filesystem nears
full, the maximum dynamic prealloc size іs reduced according to this
table (based on 4k block size):

freespace       max prealloc size
  >5%             full extent (8GB)
  4-5%             2GB (8GB >> 2)
  3-4%             1GB (8GB >> 3)
  2-3%           512MB (8GB >> 4)
  1-2%           256MB (8GB >> 5)
  <1%            128MB (8GB >> 6)

This should reduce the amount of space held in speculative
preallocation for such cases.

This breaks du command and here is why.

By default ./mc cp resumes your previously aborted downloads. Once the download is finished you see the eventual file size reported would be bigger than the actual data on disk.

For example as shown below

master!mc *> ./mc cp s3://thisbucketisgoingtobetested/newfile .
40.46 MB / 256.00 MB [=============>                                                                        ] 15.81 % 6.48 MB/s 33s
master!mc *> ./mc cp s3://thisbucketisgoingtobetested/newfile .
163.84 MB / 256.00 MB [======================================================>                              ] 64.00 % 8.47 MB/s 10s
master!mc *> ./mc cp s3://thisbucketisgoingtobetested/newfile .
256.00 MB / 256.00 MB [===================================================================================] 100.00 % 17.84 MB/s 14s
Success!
master!mc *>
master!mc *> du -sh newfile 
400M    newfile
master!mc *> ls -lh newfile 
-rw-rw-r-- 1 harsha harsha 256M Mar 11 13:19 newfile

So you don't really have 400M worth of data on disk, but surely 400MB worth of blocks are used to allocate 256MB worth of data. So the file on disk now is a sparse file, which is what the XFS dynamic speculative preallocation supposed to do.

For large objects this can lead to ENOSPC conditions prematurely even when your object size did not exceed your available disk space.

TO see the actual size used on disk ignoring the sparse nature of the file on disk, use the following option for du

master!mc *> du -sh newfile --apparent-size
256M    newfile

Review error messages

  • No color option for error messages
  • Human readable error prefixed with "mc"
  • Review all error messages

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.