ProgressDialog no se muestra al realizar una tarea

Tengo una rutina de respaldo que copia todo desde una carpeta a una tarjeta SD externa que funciona perfectamente. Estoy intentando obtener un buen cuadro de diálogo emergente que muestra cuándo se está ejecutando, pero simplemente no se muestra. Ni siquiera intenta ejecutarse (pero la copia de seguridad se completa).

Aquí está mi código en este momento:

public void doBackup(View view) throws IOException{
    ProgressDialog pd = new ProgressDialog(this);
    pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    pd.setMessage("Running backup. Do not unplug drive");
    pd.setIndeterminate(true);
    pd.setCancelable(false);
    pd.show();
    File source = new File("/mnt/extSdCard/DirectEnquiries"); 
    File dest = new File("/mnt/UsbDriveA/Backup");
    copyDirectory(source, dest);
    pd.dismiss();
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta