This is a script for migrating files uploaded to RocketChat from the default GridFS
upload store to FileSystem/AmazonS3.
migrate -c [command] -d [s3 bucket|output directory] -r [dbname] -t [target]
Run ./migrate.py -h
to see all available options
Backup your MongoDB database so that you won't loose any data in case of any issues. (MongoDB Backup Methods)
Change Storage Type
in RocketChat under Administration> File Upload
to FileSystem
or AmazonS3
. Update the relevant configuration under the corresponding head in configuration page.
Start copying files to the new store
File System
./migrate.py -c dump -r rocketchat -t FileSystem -d ./uploads
S3
./migrate.py -c dump -r rocketchat -t AmazonS3 -d S3bucket_name
Update the database to use new store (use -t AmazonS3
if you are migrating to S3)
./migrate.py -c updatedb -d /app/uploads -r rocketchat -t FileSystem
Check if everything is working correctly. Ensure that there are no files missing.
Remove obsolete data from GridFS
./migrate.py -c removeblobs -d /app/uploads -r rocketchat
On some configurations, it might help to add the parameters "directconnection=True and connect=False" to the MongoClient constructor, such as:
MongoClient(..., retryWrites=False, directconnection=True, connect=False)[self.db]
So that the connection happens in Single topology.