Migrating a Minecraft server to higher-performance hardware, unbundling a monolithic server into a Velocity or BungeeCord proxy network, or switching hosting providers requires transferring not just world maps, but your complete plugin infrastructure: LuckPerms permissions, EssentialsX balances, WorldGuard regions, and CoreProtect audit histories.
In this practical guide, we break down the structure of the plugins/ directory, execute clean daemon shutdowns to flush SQLite Write-Ahead Logs (WAL), migrate data to the new server, and verify dependency initialization.
Understanding the plugins Directory: Jars, Configs, and Datastores#
The plugins/ folder on a PaperMC instance holds three distinct classes of files:
- Executable Binaries (
.jar): The compiled Java plugin logic. - Configuration Files (
.yml,.json): Behavioral settings and localized strings (messages.yml). - Local Datastores: Embedded SQLite databases (
.db,.sqlite), player profile records (userdata/<UUID>.yml), and flat data files.
A frequent error is assuming that copying .jar files alone is sufficient. The core value of your setup lives inside the matching plugin data folders, which maintain permissions hierarchies, player balances, and protected boundaries.
Migration Preparation: Daemon Shutdown and WAL Flushing#
Modern plugins like LuckPerms and CoreProtect utilize SQLite in Write-Ahead Logging (WAL) mode. During active gameplay, updates buffer inside temporary .db-wal and .db-shm files. Archiving the plugins/ directory while the server is live risks copying a desynchronized or corrupted database.
Halt the server service to force memory buffers to disk:
sudo systemctl stop minecraft && sudo systemctl status minecraft
Verify that the java process has exited completely, then compile an archive of the entire plugin tree:
cd /opt/minecraft/server
tar -czvf /tmp/plugins_migration.tar.gz plugins/
ls -lh /tmp/plugins_migration.tar.gz
Transferring Archives and Correcting Permissions on the Destination#
Transfer the compiled archive to the destination host via scp:
scp /tmp/plugins_migration.tar.gz user@new-server-ip:/tmp/
On the destination server, unpack the archive into the server root and restore file ownership:
cd /opt/minecraft/server
tar -xzvf /tmp/plugins_migration.tar.gz
sudo chown -R minecraft:minecraft /opt/minecraft/server/plugins
sudo chmod -R 755 /opt/minecraft/server/plugins
If files remain owned by root, the plugin runtime cannot create or lock database files upon startup, triggering immediate java.io.IOException: Permission denied crashes.
External Database Synchronization and Startup Verification#
If any plugins connect to an external SQL database (MySQL, MariaDB, or PostgreSQL), audit and update the connection credentials (host, database, user, password) within plugins/<PluginName>/config.yml:
grep -rn "host:" /opt/minecraft/server/plugins/*/config.yml 2>/dev/null
Start the PaperMC service on the destination host:
sudo systemctl start minecraft && sudo journalctl -u minecraft -f --no-tail
Audit logs/latest.log for initialization exceptions:
grep -E "ERROR|Enabling LuckPerms|Enabling Vault" /opt/minecraft/server/logs/latest.log
Clean startup output confirming Vault and LuckPerms without database corruption warnings validates that all permissions and economy balances transferred seamlessly.
If you are looking to deploy a high-performance PaperMC instance with fast SFTP data migration, automated scheduled backups, and optimized server runtimes, professional Minecraft server hosting delivers the tools required for painless server migrations.




