Skip to content

Instantly share code, notes, and snippets.

@hfike
Created July 23, 2018 05:20
Show Gist options
  • Save hfike/b05420247582c51a365f0d6522e4ac2b to your computer and use it in GitHub Desktop.
Save hfike/b05420247582c51a365f0d6522e4ac2b to your computer and use it in GitHub Desktop.
Batch file to back up a JSS DB on a Windows server to restore to a test JSS server.
@ECHO OFF
REM Script to backup JSS database for use in restoring to a test server
REM Based on Rich Trouton's Script below
REM https://gist.github.com/rtrouton/1da265982a7ef70c8589ac47901a3925#file-gistfile1-txt
REM Create a proper datetime stamp for output file name
REM Based on this https://stackoverflow.com/a/19799236
For /f "delims=" %%# in ('powershell get-date -format "{yyyyMMddHHmm}"') do @set _date=%%#
SET database_name=jamfpro_db_name_here
REM Using the "--login-path" flag is the secure way to pass authentication
REM See here to generate https://dev.mysql.com/doc/mysql-utilities/1.5/en/mysql-utils-intro-connspec-mylogin.cnf.html
SET login_path=localhost
REM If you can't use "--login-path" uncomment the variables below
REM SET database_user=jamfdbuser
REM SET database_pass=jamfdbpass
REM You will also need to add the following flags back into the mysqldump command in place of "--login-path"
REM --user=%database_user% ^
REM --password=%database_pass% ^
SET output_file="C:\backups\jss_backup_%_date%.sql"
ECHO Starting backup of database "%database_name%" at the timestamp %_date%.
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump" ^
--login-path=%login_path% ^
%database_name% ^
--result-file=%output_file% ^
--ignore-table=%database_name%.app_push_notification_queue ^
--ignore-table=%database_name%.application_push_tokens ^
--ignore-table=%database_name%.computer_user_pushtokens ^
--ignore-table=%database_name%.mobile_user_pushtoken ^
--ignore-table=%database_name%.push_notification_framework_settings ^
--ignore-table=%database_name%.push_notification_keystores ^
--ignore-table=%database_name%.push_notification_proxy_settings ^
--ignore-table=%database_name%.computer_dep_prestage_device_assignments ^
--ignore-table=%database_name%.computer_dep_prestage_skip_step_associations ^
--ignore-table=%database_name%.computer_dep_prestages ^
--ignore-table=%database_name%.computer_prestage_configuration_profiles ^
--ignore-table=%database_name%.mobile_device_prestage_device_assignments ^
--ignore-table=%database_name%.mobile_device_prestage_device_names ^
--ignore-table=%database_name%.mobile_device_prestage_skip_step_associations ^
--ignore-table=%database_name%.mobile_device_prestages ^
--ignore-table=%database_name%.prestage_account_settings ^
--ignore-table=%database_name%.prestage_notification ^
--ignore-table=%database_name%.ssmacos_vpp_content_installed ^
--ignore-table=%database_name%.vpp_account_purchasing_information ^
--ignore-table=%database_name%.vpp_admin_accounts ^
--ignore-table=%database_name%.vpp_assignment ^
--ignore-table=%database_name%.vpp_assignment_deployment ^
--ignore-table=%database_name%.vpp_assignment_licenses ^
--ignore-table=%database_name%.vpp_email_notifications ^
--ignore-table=%database_name%.vpp_invitation_deployment ^
--ignore-table=%database_name%.vpp_invitation_usage ^
--ignore-table=%database_name%.vpp_invitations ^
--ignore-table=%database_name%.vpp_licenses ^
--ignore-table=%database_name%.vpp_mobile_device_app_license_app ^
--ignore-table=%database_name%.vpp_user_accounts ^
--ignore-table=%database_name%.device_enrollment_program_devices ^
--ignore-table=%database_name%.device_enrollment_program_instances ^
--ignore-table=%database_name%.jss_cluster_nodes ^
--ignore-table=%database_name%.jss_cluster_settings ^
--ignore-table=%database_name%.jss_cluster_updates ^
--ignore-table=%database_name%.jss_memcached_endpoints ^
--ignore-table=%database_name%.limited_access_mode_settings ^
--ignore-table=%database_name%.lps_connection_settings
ECHO Complete! Database dumped to %output_file%
PAUSE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment