wp_nav_menu doesn’t work in a duplicate server

The menu data is in the database. In order to have an exact copy, you need to copy the files and all the items in the database as well.

Verify if all the needed elements from the database are present in the wordpress admin and or with phpmyadmin.

Alternatively, after these lines in your PHP file :
<div class="shop-menu">
<?php

you can put the following piece of code:

$menu = wp_get_nav_menu_object('shop-top-menu');
$menu_items = wp_get_nav_menu_items($menu->term_id);
print '<pre>';
var_dump($menu_items );
print '</pre>';

to check if wordpress can find the menu data at all:

If the output is:

array(0) { }

WordPress cannot find the menu and something went wrong during the copying process.