1 . make your remote or production database accept remote connection using a wild card or special Ip address ! through some sort of cpanel or config file !
2 . you can extend the db artisan command like "db:sync".
3 . command code (not tested yet) :
$db_local = Config::get('database.'.env('DB_CONNECTION', 'db_local'));
$dump = "tmp.db";
exec("mysqldump --user={$db_local['username']} --password='{$db_local['password']}' --host={$db_local['host']} {$db_local['database']} --ignore-table={$db['database']}.some_table > $dump");
$db_remote = Config::get('database.'.env('DB_CONNECTION', 'db_remote'));
exec("mysql --user={$db_remote['username']} --password='{$db_remote['password']}' --host={$db_remote['host']} {$db_remote['database']} < $dump");
I did no add any function check as usually it's intended to work.
You can for example instead of a command, add some automation using events, cron job, listeners ... there's many options, but the main logic part trick is : Defining environment variable names for your 2 db connections, and in the app config database.php, define your connections credentials etc, and finally make use of the exec, mysqldump & mysql.
Good luck